@@ -237,15 +237,15 @@ server.listen(port, () => {
237
237
const clients : Map < string , WebSocket > = new Map < string , WebSocket > ( ) ;
238
238
const pairs : Map < string , string > = new Map < string , string > ( ) ;
239
239
240
- wss . on ( 'connection' , ( client : WebSocket , request : IncomingMessage ) => {
240
+ wss . on ( 'connection' , async ( client : WebSocket , request : IncomingMessage ) => {
241
241
const query = qs . parse ( ( request . url || '' ) . replace ( / \/ \? / g, '' ) ) ;
242
242
const clientId = ( query ?. clientId as string ) || crypto . randomUUID ( ) ;
243
243
clients . set ( clientId , client ) ;
244
244
console . log ( `New Connection - ${ clientId } ` ) ;
245
245
246
246
if ( ! clientId . includes ( ':proof' ) ) {
247
- console . log ( 'proof connection' , clientId ) ;
248
- client . send (
247
+ await send (
248
+ clientId ,
249
249
bufferify ( {
250
250
method : 'client_connect' ,
251
251
params : { clientId } ,
@@ -263,16 +263,15 @@ wss.on('connection', (client: WebSocket, request: IncomingMessage) => {
263
263
if ( ! clientId . includes ( ':proof' ) ) {
264
264
const pair = pairs . get ( clientId ) ;
265
265
if ( pair ) {
266
- pairs . delete ( pair ) ;
267
- pairs . delete ( clientId ) ;
268
- console . log ( 'disconnect' , clientId ) ;
269
- await send (
270
- pair ,
271
- bufferify ( {
272
- method : 'pair_disconnect' ,
273
- params : { pairId : clientId } ,
274
- } ) ,
275
- ) ;
266
+ // pairs.delete(pair);
267
+ // pairs.delete(clientId);
268
+ // await send(
269
+ // pair,
270
+ // bufferify({
271
+ // method: 'pair_disconnect',
272
+ // params: { pairId: clientId },
273
+ // }),
274
+ // );
276
275
}
277
276
}
278
277
@@ -286,11 +285,6 @@ wss.on('connection', (client: WebSocket, request: IncomingMessage) => {
286
285
if ( ! msg ) {
287
286
const [ cid ] = clientId . split ( ':' ) ;
288
287
const pairedClientId = pairs . get ( cid ) ;
289
- // @ts -ignore
290
- console . log ( 'mpc' , rawData . length , {
291
- from : clientId ,
292
- to : pairedClientId + ':proof' ,
293
- } ) ;
294
288
await send ( pairedClientId + ':proof' , rawData ) ;
295
289
return ;
296
290
}
@@ -319,11 +313,11 @@ wss.on('connection', (client: WebSocket, request: IncomingMessage) => {
319
313
case 'proof_request_cancel' :
320
314
case 'proof_request_reject' :
321
315
case 'proof_request_end' :
322
- console . log ( msg . method , { from : clientId , to } ) ;
316
+ console . log ( ' method:' , msg . method ) ;
323
317
await send ( to , rawData ) ;
324
318
break ;
325
319
case 'pair_request_success' : {
326
- console . log ( msg . method , { from : clientId , to } ) ;
320
+ console . log ( ' method:' , msg . method ) ;
327
321
if ( await send ( to , rawData ) ) {
328
322
pairs . set ( to , clientId ) ;
329
323
pairs . set ( clientId , to ) ;
@@ -345,25 +339,27 @@ wss.on('connection', (client: WebSocket, request: IncomingMessage) => {
345
339
}
346
340
347
341
async function send ( clientId : string , data : RawData ) {
348
- return new Promise ( ( resolve ) => {
349
- const target = clients . get ( clientId ) ;
350
-
351
- if ( ! target ) {
352
- client . send (
353
- bufferify ( {
354
- error : {
355
- message : `client "${ clientId } " does not exist` ,
342
+ return mutex . runExclusive ( async ( ) => {
343
+ return new Promise ( ( resolve ) => {
344
+ const target = clients . get ( clientId ) ;
345
+
346
+ if ( ! target ) {
347
+ client . send (
348
+ bufferify ( {
349
+ error : {
350
+ message : `client "${ clientId } " does not exist` ,
351
+ } ,
352
+ } ) ,
353
+ ( err ) => {
354
+ resolve ( false ) ;
356
355
} ,
357
- } ) ,
358
- ( err ) => {
359
- resolve ( false ) ;
360
- } ,
361
- ) ;
362
- } else {
363
- target . send ( data , ( err ) => {
364
- resolve ( ! err ) ;
365
- } ) ;
366
- }
356
+ ) ;
357
+ } else {
358
+ target . send ( data , ( err ) => {
359
+ resolve ( ! err ) ;
360
+ } ) ;
361
+ }
362
+ } ) ;
367
363
} ) ;
368
364
}
369
365
} ) ;
0 commit comments