一、服务端安装ws库
npm install ws
创建服务端
const WebSocket = require("ws");
const WebSocketServer = WebSocket.Server;
const wss = new WebSocketServer({ port: 3000 });
let sockets = [];
wss.on("connection", (ws, req) => {
let id = req?.url.split("=")[1];
console.log("连接了", id);
sockets.push({ ws, id });
ws.on("message", (message) => {
sockets.forEach((item) => {
item.ws.send(
JSON.stringify({
id: id,
message: message.toString(),
})
);
});
});
});
二、创建Web页面
<!DOCTYPE html>
<html>
<head>
<title>websocket</title>
<style>
p {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<input type="text" id="message">
<div id="sendmessage">点击发送</div>
<div id="messagebox" style="width: 1000px;height: 1000px;background-color: #39c5bb;"></div>
<script type="text/javascript">
let myid = uuid()
let text
const messagebox = document.getElementById('messagebox')
var ws = new WebSocket('ws://localhost:3000' + `?id=${myid}`);
document.getElementById('sendmessage').addEventListener('click', () => {
const message = document.getElementById('message').value
ws.send(message);
document.getElementById('message').value = ''
})
ws.onmessage = function (mes) {
sendmessage(mes)
}
const sendmessage = function (mes) {
let data = JSON.parse(mes.data)
const div = document.createElement('div')
const p1 = document.createElement('p')
p1.textContent = 'ID为(' + data.id + ')的用户' + new Date()
const p2 = document.createElement('p')
p2.textContent = data.message
console.log(data)
div.textContent = text
if (data.id == myid) {
div.style.textAlign = 'right'
}
messagebox.appendChild(div)
div.appendChild(p1)
div.appendChild(p2)
text = null
}
function uuid() {
var temp_url = URL.createObjectURL(new Blob());
var uuid = temp_url.toString();
URL.revokeObjectURL(temp_url);
return uuid.substr(uuid.lastIndexOf("/") + 1);
}
</script>
</body>
</html>
效果图
