diff --git a/Example/example.ts b/Example/example.ts index 9cb0ee3..6e8a5d0 100644 --- a/Example/example.ts +++ b/Example/example.ts @@ -41,7 +41,7 @@ const startSock = async() => { generateHighQualityLinkPreview: true, // ignore all broadcast messages -- to receive the same // comment the line below out - shouldIgnoreJid: jid => isJidBroadcast(jid), + // shouldIgnoreJid: jid => isJidBroadcast(jid), // implement to handle retries getMessage: async key => { if(store) { diff --git a/src/Socket/socket.ts b/src/Socket/socket.ts index 1dfe72f..32b6ee4 100644 --- a/src/Socket/socket.ts +++ b/src/Socket/socket.ts @@ -38,6 +38,7 @@ export const makeSocket = ({ agent }) ws.setMaxListeners(0) + const ev = makeEventBuffer(logger) /** ephemeral key pair used to encrypt/decrypt communication. Unique for each connection */ const ephemeralKeyPair = Curve.generateKeyPair() @@ -65,7 +66,17 @@ export const makeSocket = ({ } const bytes = noise.encodeFrame(data) - await sendPromise.call(ws, bytes) as Promise + await promiseTimeout( + connectTimeoutMs, + async(resolve, reject) => { + try { + await sendPromise.call(ws, bytes) + resolve() + } catch(error) { + reject(error) + } + } + ) } /** send a binary node */ diff --git a/src/Utils/generics.ts b/src/Utils/generics.ts index 58c2a2a..7e5ee28 100644 --- a/src/Utils/generics.ts +++ b/src/Utils/generics.ts @@ -138,13 +138,13 @@ export const delayCancellable = (ms: number) => { export async function promiseTimeout(ms: number | undefined, promise: (resolve: (v?: T)=>void, reject: (error) => void) => void) { if(!ms) { - return new Promise (promise) + return new Promise(promise) } const stack = new Error().stack // Create a promise that rejects in milliseconds const { delay, cancel } = delayCancellable (ms) - const p = new Promise ((resolve, reject) => { + const p = new Promise((resolve, reject) => { delay .then(() => reject( new Boom('Timed Out', {