123456789101112131415161718192021222324252627282930313233343536 |
-
- const http = require('http');
- const ws = require('ws');
-
- const wss = new ws.Server({ noServer: true });
-
- function accept(req, res) {
- // all incoming requests must be websockets
- if (!req.headers.upgrade || req.headers.upgrade.toLowerCase() != 'websocket') {
- res.end();
- return;
- }
-
- // can be Connection: keep-alive, Upgrade
- if (!req.headers.connection.match(/\bupgrade\b/i)) {
- res.end();
- return;
- }
-
- wss.handleUpgrade(req, req.socket, Buffer.alloc(0), onConnect);
- }
-
- function onConnect(ws) {
- ws.on('message', function (message) {
- let name = message.match(/([\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]+)$/gu) || "Guest";
- ws.send(`Hello from server, ${name}!`);
-
- setTimeout(() => ws.close(1000, "Bye!"), 50000);
- });
- }
-
- if (!module.parent) {
- http.createServer(accept).listen(8080);
- } else {
- exports.accept = accept;
- }
|