5
5
*/
6
6
7
7
var LibraryWebSocket = {
8
+ $webSockets__deps : [ '$HandleAllocator' ] ,
9
+ $webSockets : "new HandleAllocator();" ,
10
+
11
+ $WS__deps : [ '$webSockets' ] ,
8
12
$WS : {
9
- sockets : [ null ] ,
10
13
socketEvent : null ,
14
+ getSocket ( socketId ) {
15
+ if ( ! webSockets . has ( socketId ) ) {
16
+ return 0 ;
17
+ }
18
+ return webSockets . get ( socketId ) ;
19
+ } ,
11
20
getSocketEvent ( socketId ) {
12
21
// Singleton event pointer. Use EmscriptenWebSocketCloseEvent, which is
13
22
// the largest event struct
@@ -20,7 +29,7 @@ var LibraryWebSocket = {
20
29
emscripten_websocket_get_ready_state__deps : [ '$WS' ] ,
21
30
emscripten_websocket_get_ready_state__proxy : 'sync' ,
22
31
emscripten_websocket_get_ready_state : ( socketId , readyState ) => {
23
- var socket = WS . sockets [ socketId ] ;
32
+ var socket = WS . getSocket ( socketId ) ;
24
33
if ( ! socket ) {
25
34
#if WEBSOCKET_DEBUG
26
35
dbg ( `emscripten_websocket_get_ready_state(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -35,7 +44,7 @@ var LibraryWebSocket = {
35
44
emscripten_websocket_get_buffered_amount__deps : [ '$WS' ] ,
36
45
emscripten_websocket_get_buffered_amount__proxy : 'sync' ,
37
46
emscripten_websocket_get_buffered_amount : ( socketId , bufferedAmount ) = > {
38
- var socket = WS . sockets [ socketId ] ;
47
+ var socket = WS . getSocket ( socketId ) ;
39
48
if ( ! socket ) {
40
49
#if WEBSOCKET_DEBUG
41
50
dbg ( `emscripten_websocket_get_buffered_amount(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -50,7 +59,7 @@ var LibraryWebSocket = {
50
59
emscripten_websocket_get_extensions__deps : [ '$WS' , '$stringToUTF8' ] ,
51
60
emscripten_websocket_get_extensions__proxy : 'sync' ,
52
61
emscripten_websocket_get_extensions : ( socketId , extensions , extensionsLength ) => {
53
- var socket = WS . sockets [ socketId ] ;
62
+ var socket = WS . getSocket ( socketId ) ;
54
63
if ( ! socket ) {
55
64
#if WEBSOCKET_DEBUG
56
65
dbg ( `emscripten_websocket_get_extensions(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -65,7 +74,7 @@ var LibraryWebSocket = {
65
74
emscripten_websocket_get_extensions_length__deps : [ '$WS' ] ,
66
75
emscripten_websocket_get_extensions_length__proxy : 'sync' ,
67
76
emscripten_websocket_get_extensions_length : ( socketId , extensionsLength ) => {
68
- var socket = WS . sockets [ socketId ] ;
77
+ var socket = WS . getSocket ( socketId ) ;
69
78
if ( ! socket ) {
70
79
#if WEBSOCKET_DEBUG
71
80
dbg ( `emscripten_websocket_get_extensions_length(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -80,7 +89,7 @@ var LibraryWebSocket = {
80
89
emscripten_websocket_get_protocol__deps : [ '$WS' , '$stringToUTF8' ] ,
81
90
emscripten_websocket_get_protocol__proxy : 'sync' ,
82
91
emscripten_websocket_get_protocol : ( socketId , protocol , protocolLength ) => {
83
- var socket = WS . sockets [ socketId ] ;
92
+ var socket = WS . getSocket ( socketId ) ;
84
93
if ( ! socket ) {
85
94
#if WEBSOCKET_DEBUG
86
95
dbg ( `emscripten_websocket_get_protocol(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -95,7 +104,7 @@ var LibraryWebSocket = {
95
104
emscripten_websocket_get_protocol_length__deps : [ '$WS' ] ,
96
105
emscripten_websocket_get_protocol_length__proxy : 'sync' ,
97
106
emscripten_websocket_get_protocol_length : ( socketId , protocolLength ) => {
98
- var socket = WS . sockets [ socketId ] ;
107
+ var socket = WS . getSocket ( socketId ) ;
99
108
if ( ! socket ) {
100
109
#if WEBSOCKET_DEBUG
101
110
dbg ( `emscripten_websocket_get_protocol_length(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -110,7 +119,7 @@ var LibraryWebSocket = {
110
119
emscripten_websocket_get_url__deps : [ '$WS' , '$stringToUTF8' ] ,
111
120
emscripten_websocket_get_url__proxy : 'sync' ,
112
121
emscripten_websocket_get_url : ( socketId , url , urlLength ) => {
113
- var socket = WS . sockets [ socketId ] ;
122
+ var socket = WS . getSocket ( socketId ) ;
114
123
if ( ! socket ) {
115
124
#if WEBSOCKET_DEBUG
116
125
dbg ( `emscripten_websocket_get_url(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -125,7 +134,7 @@ var LibraryWebSocket = {
125
134
emscripten_websocket_get_url_length__deps : [ '$WS' ] ,
126
135
emscripten_websocket_get_url_length__proxy : 'sync' ,
127
136
emscripten_websocket_get_url_length : ( socketId , urlLength ) => {
128
- var socket = WS . sockets [ socketId ] ;
137
+ var socket = WS . getSocket ( socketId ) ;
129
138
if ( ! socket ) {
130
139
#if WEBSOCKET_DEBUG
131
140
dbg ( `emscripten_websocket_get_url_length(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -144,7 +153,7 @@ var LibraryWebSocket = {
144
153
// if (thread == {{{ cDefs.EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD }}} ||
145
154
// (thread == _pthread_self()) return emscripten_websocket_set_onopen_callback_on_calling_thread(socketId, userData, callbackFunc);
146
155
var eventPtr = WS . getSocketEvent ( socketId ) ;
147
- var socket = WS . sockets [ socketId ] ;
156
+ var socket = WS . getSocket ( socketId ) ;
148
157
if ( ! socket ) {
149
158
#if WEBSOCKET_DEBUG
150
159
dbg ( `emscripten_websocket_set_onopen_callback(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -168,7 +177,7 @@ var LibraryWebSocket = {
168
177
emscripten_websocket_set_onerror_callback_on_thread__proxy : 'sync' ,
169
178
emscripten_websocket_set_onerror_callback_on_thread : ( socketId , userData , callbackFunc , thread ) => {
170
179
var eventPtr = WS . getSocketEvent ( socketId ) ;
171
- var socket = WS . sockets [ socketId ] ;
180
+ var socket = WS . getSocket ( socketId ) ;
172
181
if ( ! socket ) {
173
182
#if WEBSOCKET_DEBUG
174
183
dbg ( `emscripten_websocket_set_onerror_callback(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -192,7 +201,7 @@ var LibraryWebSocket = {
192
201
emscripten_websocket_set_onclose_callback_on_thread__proxy : 'sync' ,
193
202
emscripten_websocket_set_onclose_callback_on_thread : ( socketId , userData , callbackFunc , thread ) => {
194
203
var eventPtr = WS . getSocketEvent ( socketId ) ;
195
- var socket = WS . sockets [ socketId ] ;
204
+ var socket = WS . getSocket ( socketId ) ;
196
205
if ( ! socket ) {
197
206
#if WEBSOCKET_DEBUG
198
207
dbg ( `emscripten_websocket_set_onclose_callback(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -219,7 +228,7 @@ var LibraryWebSocket = {
219
228
emscripten_websocket_set_onmessage_callback_on_thread__proxy : 'sync' ,
220
229
emscripten_websocket_set_onmessage_callback_on_thread : ( socketId , userData , callbackFunc , thread ) => {
221
230
var eventPtr = WS . getSocketEvent ( socketId ) ;
222
- var socket = WS . sockets [ socketId ] ;
231
+ var socket = WS . getSocket ( socketId ) ;
223
232
if ( ! socket ) {
224
233
#if WEBSOCKET_DEBUG
225
234
dbg ( `emscripten_websocket_set_onmessage_callback(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -291,8 +300,7 @@ var LibraryWebSocket = {
291
300
// We always marshal received WebSocket data back to Wasm, so enable receiving the data as arraybuffers for easy marshalling.
292
301
socket . binaryType = 'arraybuffer' ;
293
302
// TODO: While strictly not necessary, this ID would be good to be unique across all threads to avoid confusion.
294
- var socketId = WS . sockets . length ;
295
- WS . sockets [ socketId ] = socket ;
303
+ var socketId = webSockets . allocate ( socket ) ;
296
304
297
305
#if WEBSOCKET_DEBUG
298
306
dbg ( `emscripten_websocket_new(url=${ url } , protocols=${ protocols ? UTF8ToString ( protocols ) . split ( ',' ) : 'null' } ): created socket ID ${ socketId } )` ) ;
@@ -303,7 +311,7 @@ var LibraryWebSocket = {
303
311
emscripten_websocket_send_utf8_text__deps : [ '$WS' ] ,
304
312
emscripten_websocket_send_utf8_text__proxy : 'sync' ,
305
313
emscripten_websocket_send_utf8_text : ( socketId , textData ) => {
306
- var socket = WS . sockets [ socketId ] ;
314
+ var socket = WS . getSocket ( socketId ) ;
307
315
if ( ! socket ) {
308
316
#if WEBSOCKET_DEBUG
309
317
dbg ( `emscripten_websocket_send_utf8_text(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -326,7 +334,7 @@ var LibraryWebSocket = {
326
334
emscripten_websocket_send_binary__deps : [ '$WS' ] ,
327
335
emscripten_websocket_send_binary__proxy : 'sync' ,
328
336
emscripten_websocket_send_binary : ( socketId , binaryData , dataLength ) => {
329
- var socket = WS . sockets [ socketId ] ;
337
+ var socket = WS . getSocket ( socketId ) ;
330
338
if ( ! socket ) {
331
339
#if WEBSOCKET_DEBUG
332
340
dbg ( `emscripten_websocket_send_binary(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -357,7 +365,7 @@ var LibraryWebSocket = {
357
365
emscripten_websocket_close__deps : [ '$WS' ] ,
358
366
emscripten_websocket_close__proxy : 'sync' ,
359
367
emscripten_websocket_close : ( socketId , code , reason ) => {
360
- var socket = WS . sockets [ socketId ] ;
368
+ var socket = WS . getSocket ( socketId ) ;
361
369
if ( ! socket ) {
362
370
#if WEBSOCKET_DEBUG
363
371
dbg ( `emscripten_websocket_close(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -383,7 +391,7 @@ var LibraryWebSocket = {
383
391
emscripten_websocket_delete__deps : [ '$WS' ] ,
384
392
emscripten_websocket_delete__proxy : 'sync' ,
385
393
emscripten_websocket_delete : ( socketId ) => {
386
- var socket = WS . sockets [ socketId ] ;
394
+ var socket = WS . getSocket ( socketId ) ;
387
395
if ( ! socket ) {
388
396
#if WEBSOCKET_DEBUG
389
397
dbg ( `emscripten_websocket_delete(): Invalid socket ID ${ socketId } specified!` ) ;
@@ -395,7 +403,7 @@ var LibraryWebSocket = {
395
403
dbg ( `emscripten_websocket_delete(socketId=${ socketId } )` ) ;
396
404
#endif
397
405
socket . onopen = socket . onerror = socket . onclose = socket . onmessage = null ;
398
- delete WS . sockets [ socketId ] ;
406
+ webSockets . free ( socketId ) ;
399
407
return { { { cDefs . EMSCRIPTEN_RESULT_SUCCESS } } } ;
400
408
} ,
401
409
0 commit comments