Advertisement
Guest User

Untitled

a guest
Mar 21st, 2022
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. export async function asyncEmit<T>(
  3.   region: string,
  4.   socket: Server,
  5.   event: string,
  6.   data: {
  7.     id: any;
  8.     [k: string]: any;
  9.   }
  10. ): Promise<{ result: T; error: boolean }> {
  11.   return new Promise((resolve, reject) => {
  12.     socket.to(region).emit(event, data);
  13.  
  14.     const cb = (res: { result: T; error: boolean }, ack: any) => {
  15.       if (res.error) {
  16.         reject(res.result);
  17.         ack('Error');
  18.       }
  19.       console.log('success, ', res.result);
  20.       socket.off(`${data.id}-${event}`, cb);
  21.       resolve(res);
  22.  
  23.       ack('Success');
  24.     };
  25.  
  26.     socket.on(`${data.id}-${event}`, cb);
  27.  
  28.     setTimeout(() => {
  29.       socket.off(`${data.id}-${event}`, cb);
  30.       reject('Timed out.');
  31.     }, 5000);
  32.   });
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement