Ich führe einen WebSocket-Server mit ws
aus und versuche eingehende Nachrichten aufzuteilen, je nachdem, ob sie JSON sind oder nicht.Hinzufügen von Listener zum Objektprototyp
function determineJSON(m) {
try { return ['json', JSON.parse(m)] }
catch (err) { return ['not-json', m] }
}
wss.on('connection', ws => {
ws.on('message', m => {
// Emit to 'json' and 'not-json' as appropriate
if (ws.listenerCount('json') + ws.listenerCount('not-json') > 0) {
ws.emit(...determineJSON(m))
}
})
.on('json', j => { ... })
.on('not-json', m => { ... })
})
Der Code funktioniert gut, aber ich habe mich gefragt, wie ich die .on('message', ...)
Zuhörer in die WS
Klasse hinzufügen könnte, so dass alle neuen WS
Objekte, die es haben würde. Ich versuchte WS.prototype.on('message', ...)
, aber das schien nichts zu tun.
Erstellen Sie eine Unterklasse, und fügen Sie sie im Konstruktor hinzu. – Bergi