diff --git a/SmartWebSocketServer.js b/SmartWebSocketServer.js
new file mode 100644
index 0000000..ba8b835
--- /dev/null
+++ b/SmartWebSocketServer.js
@@ -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}));
+ }
+}
\ No newline at end of file
diff --git a/examples/.gitignore b/examples/.gitignore
new file mode 100644
index 0000000..b512c09
--- /dev/null
+++ b/examples/.gitignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/examples/client.html b/examples/client.html
new file mode 100644
index 0000000..bb89c41
--- /dev/null
+++ b/examples/client.html
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/examples/package-lock.json b/examples/package-lock.json
new file mode 100644
index 0000000..45e81c8
--- /dev/null
+++ b/examples/package-lock.json
@@ -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
+ }
+ }
+ }
+ }
+}
diff --git a/examples/package.json b/examples/package.json
new file mode 100644
index 0000000..37c3082
--- /dev/null
+++ b/examples/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "ws": "^8.18.0"
+ }
+}
diff --git a/examples/server.js b/examples/server.js
new file mode 100644
index 0000000..8c19768
--- /dev/null
+++ b/examples/server.js
@@ -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...");
+})
\ No newline at end of file