WebSocket
https://www.tohoho-web.com/ex/websocket.html
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/message_event
code: chat-ws.js
var server = require("ws").Server;
var s = new server({port:5000});
s.on("connection", (ws) => {
ws.on("message", (msg) => {
console.log("Recv: " + msg);
s.clients.forEach((client) => {
console.log("Send: " + msg);
client.send(msg.toString());
});
});
ws.on("close", () => {
console.log("Closed.");
});
});
code: index.html
<pre id="out"></pre>
<input type="text" id="msg">
<input type="button" id="btn" value="OK">
<script>
var out = document.getElementById("out");
var msg = document.getElementById("msg");
var btn = document.getElementById("btn");
var sock = new WebSocket("ws://127.0.0.1:5000/");
sock.addEventListener("open", (e) => {
console.log("Connected.");
});
sock.addEventListener("close", (e) => {
console.log("Closed.");
});
sock.addEventListener("error", (e) => {
console.log("Error.");
});
sock.addEventListener("message", (e) => {
out.innerText += e.data + "\n";
msg.value = "";
msg.focus();
});
btn.addEventListener("click", (e) => {
sock.send(msg.value);
});
msg.focus();
</script>
code: zsh
$ node chat-ws.js
Recv: foo
Send: foo
Recv: bar
Send: bar
^C
https://scrapbox.io/files/68125cf14a23570a371b324d.png
https://scrapbox.io/files/68125fae8b8dc459bb71baaa.png
https://scrapbox.io/files/68125fb7fd2fd5c475f42be4.png
https://scrapbox.io/files/68125f46a4f859921ab10b56.png