en.javascript.info/5-network/08-websocket/demo.view/server.js
2019-04-02 14:01:44 +03:00

34 lines
799 B
JavaScript

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(/\w+$/) || "Guest";
ws.send(`Hello, ${name}!`);
setTimeout(() => ws.close(1000, "Bye!"), 5000);
});
}
if (!module.parent) {
http.createServer(accept).listen(8080);
} else {
exports.accept = accept;
}