updates
This commit is contained in:
parent
94c83e9e50
commit
cc5213b09e
79 changed files with 1341 additions and 357 deletions
34
5-network/11-websocket/demo.view/server.js
Normal file
34
5-network/11-websocket/demo.view/server.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
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;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue