add SmartWebSocketServer

This commit is contained in:
Luca Conte 2024-08-21 19:36:49 +02:00
parent 9beec2ff3a
commit 542dc31578
6 changed files with 88 additions and 0 deletions

27
SmartWebSocketServer.js Normal file
View File

@ -0,0 +1,27 @@
module.exports = upgradeWebSocketServer;
function upgradeWebSocketServer(wss) {
wss.on("connection", (ws) => {
upgradeWebSocket(ws);
});
wss.sendEvent = function(event, data) {
wss.clients.forEach((ws) => {
ws.sendEvent(event, data);
});
}
}
function upgradeWebSocket(ws) {
ws.on("message", (message) => {
let parsedMessage = null;
try {
parsedMessage = JSON.parse(message);
if ("event" in parsedMessage && "data" in parsedMessage) {
ws.emit(parsedMessage.event, parsedMessage.data);
}
} catch {}
});
ws.sendEvent = function(event, data) {
return ws.send(JSON.stringify({"event" : event, "data" : data}));
}
}

1
examples/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

8
examples/client.html Normal file
View File

@ -0,0 +1,8 @@
<script src="../SmartWebSocket.js"></script>
<script>
let sock = new SmartWebSocket("ws://127.0.0.1:8082");
sock.on("test", console.log);
</script>

32
examples/package-lock.json generated Normal file
View File

@ -0,0 +1,32 @@
{
"name": "examples",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"ws": "^8.18.0"
}
},
"node_modules/ws": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
}
}
}

5
examples/package.json Normal file
View File

@ -0,0 +1,5 @@
{
"dependencies": {
"ws": "^8.18.0"
}
}

15
examples/server.js Normal file
View File

@ -0,0 +1,15 @@
const { WebSocketServer } = require('ws');
const upgradeWSS = require('../SmartWebSocketServer.js');
const wss = new WebSocketServer({ port: 8082 });
upgradeWSS(wss);
wss.on("u_connection", (ws) => {
console.log("connected");
ws.sendEvent("test", { "abc" : 123 });
});
wss.on("listening", () => {
console.log("listening...");
})