websocket-rpc-protocol
Advanced tools
Comparing version
{ | ||
"name": "websocket-rpc-protocol", | ||
"version": "0.1.4", | ||
"version": "0.1.5", | ||
"description": "A JSON RPC protocol for working over websockets. Sheds the weight of JSON RPC to simplify argument names and adds features.", | ||
@@ -5,0 +5,0 @@ "scripts": { |
@@ -5,4 +5,9 @@ // Exposes an API to a websocket endpoint using the protocol described in PROTOCOL.md | ||
let api; | ||
let preMessages = []; | ||
socket.addEventListener('message', onMessage); | ||
socket.addEventListener('close', close); | ||
try { | ||
api = await apiFactory(thisApi); | ||
preMessages.forEach(processMessage); | ||
preMessages = null; | ||
} | ||
@@ -12,6 +17,4 @@ catch (err) { | ||
send({ err: err.message }); | ||
socket.close(); | ||
close(); | ||
} | ||
socket.addEventListener('message', onMessage); | ||
socket.addEventListener('close', close); | ||
send({ ts: Date.now(), v: api.getVersion?.() }); | ||
@@ -28,5 +31,9 @@ return thisApi; | ||
socket.removeEventListener('close', close); | ||
try { | ||
socket.close(); | ||
} | ||
catch (err) { } | ||
} | ||
function onMessage(event) { | ||
processMessage('' + event.data); | ||
api ? processMessage('' + event.data) : preMessages.push('' + event.data); | ||
} | ||
@@ -33,0 +40,0 @@ async function processMessage(message) { |
@@ -17,13 +17,16 @@ import { Signal } from 'easy-signal'; | ||
let api: API; | ||
let preMessages: string[] = []; | ||
socket.addEventListener('message', onMessage); | ||
socket.addEventListener('close', close); | ||
try { | ||
api = await apiFactory(thisApi); | ||
preMessages.forEach(processMessage); | ||
preMessages = null; | ||
} catch (err) { | ||
console.error(err); | ||
send({ err: err.message }); | ||
socket.close(); | ||
close(); | ||
} | ||
socket.addEventListener('message', onMessage); | ||
socket.addEventListener('close', close); | ||
send({ ts: Date.now(), v: (api.getVersion as APIMethod)?.() }); | ||
@@ -44,6 +47,9 @@ | ||
socket.removeEventListener('close', close); | ||
try { | ||
socket.close(); | ||
} catch(err) {} | ||
} | ||
function onMessage(event: MessageEvent) { | ||
processMessage('' + event.data); | ||
api ? processMessage('' + event.data) : preMessages.push('' + event.data); | ||
} | ||
@@ -50,0 +56,0 @@ |
32071
1.25%792
1.67%