Mine “allikate reposid”

Mine “mkdir Vestruum”

Kirjuta npm init

Seejärel installige ws

Avage node.js

index.js
const http = require("http")
const fs = require("fs")
const ws = new require("ws")
const wss = new ws.Server({noServer: true});
function accept(req, res) {
if (req.url === "/ws" &&
req.headers.upgrade &&
req.headers.upgrade.toLowerCase() === "websocket" &&
req.headers.connection.match(/\bupgrade\b/i)) {
wss.handleUpgrade(req, req.socket, Buffer.alloc(0), onSocketConnect);
}
else if (req.url === "/") { //index.html
fs.createReadStream("./index.html").pipe(res);
}
else {
res.writeHead(404);
res.end();
}
}
const clients = new Set();
function onSocketConnect(ws) {
clients.add(ws);
ws.on("message", function(message) {
message = message.slice(0, 50); // maksimaalne pikkus on 50
for(let client of clients) {client.send(message);}
})
ws.on('close', function() {
console.log("connection closed");
clients.delete(ws);
})
}
let log;
if(!module["parent"]){
log = console.log;
http.createServer(accept).listen(8080);
} else {
log = function() {};
exports.accept = accept;
}index.html
<!doctype html>
<form name="publish">
<input type="text" name="message" maxlength="50" />
<input type="submit" value="Send" />
</form>
<div id="messages"></div>
<script>
// Määrame WebSocket'i URL vastavalt keskkonnale
let url = location.host === 'localhost' ?
'ws://localhost:8080/ws' :
location.host === 'javascript.local' ?
'ws://javascript.local/article/websocket/chat/ws' :
// arenduskeskkond
'wss://javascript.info/article/websocket/chat/ws';
// tootmiskeskkond
// Loome WebSocket'i ühenduse
let socket = new WebSocket(url);
// Vormi saatmise sündmuse töötleja
document.forms.publish.onsubmit = function() {
let outgoingMessage = this.message.value;
socket.send(outgoingMessage);
// Saadame sõnumi serverile
return false;
// Takistame lehe uuesti laadimist
};
// Sissetulevate sõnumite töötlemine
socket.onmessage = function(event) {
let incomingMessage = event.data;
showMessage(incomingMessage);
};
// Kui ühendus suletakse, logime selle koodi
socket.onclose = event => console.log(`Closed ${event.code}`);
// Funktsioon sõnumite kuvamiseks #messages elemendis
function showMessage(message) {
let messageElem = document.createElement('div');
messageElem.textContent = message;
document.getElementById('messages').prepend(messageElem);
}
</script>
