主要实现一个客户端给服务端发送消息,服务端再推送给客户端,其中客户端是有多个
首先来看一下效果
具体代码实现:
服务端:
首先需要安装依赖
npm i nodejs-websocket -S
然后新建一个app.js文件
app.js代码如下:
-
const ws = require('nodejs-websocket');//引入websocket
-
const prot = 8088;
-
-
const server = ws.createServer(connection => {
-
// console.log('有一名用户连接进来了...')
-
connection.on("text", function (str) {
-
// console.log('我来接收客户端发过来的消息' + str)
-
// connection.sendText(str);//返回给客户端的数据
-
server.connections.forEach(function (conn) {
-
conn.sendText(str)//返回给所有客户端的数据(相当于公告、通知)
-
})
-
})
-
//监听关闭
-
connection.on("close", function (code, reason) {
-
console.log("Connection closed")
-
})
-
//监听异常
-
connection.on("error",() => {
-
console.log('服务异常关闭...')
-
})
-
}).listen(prot)
客户端:
此处略过客户端的css部分,因为并不好看
-
<!-- html -->
-
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta charset="utf-8" />
-
<meta name="viewport" content="width=device-width, initial-scale=1">
-
<link rel="stylesheet" type="text/css" href="./css/cssReset.css"/>
-
<link rel="stylesheet" type="text/css" href="./css/index.css"/>
-
<title></title>
-
</head>
-
<body>
-
<div id="box">
-
<div class="msg" id="msg"></div>
-
<div class="bottom">
-
<input type="text" id="inp" value="" />
-
<button type="button" id="btn">提交</button>
-
</div>
-
</div>
-
-
<script type="text/javascript" src="./js/index.js"></script>
-
</body>
-
</html>
-
//javascript
-
-
let ws = new WebSocket('ws://localhost:8088');//实例化websocket
-
-
let val = '';
-
let btn = document.getElementById('btn');//发消息按钮
-
let msg = document.getElementById('msg');//存消息容器
-
-
//发消息
-
ws.onopen = function(){
-
//点击按钮发送消息
-
btn.onclick = function(){
-
val = document.getElementById('inp').value;
-
ws.send(val);//发送给服务端数据
-
}
-
};
-
-
//收消息
-
ws.onmessage = function (e) {
-
//e 接收服务端返回的数据
-
var received_msg = e.data;
-
msg.innerHTML += received_msg += '<br>'
-
};
-
-
//关闭连接
-
ws.onclose = function(){
-
console.log("连接已关闭...");
-
};
-
-
//抛错
-
ws.onerror = function () {
-
console.log('服务异常关闭...')
-
}
此处粘贴一个 nodejs-websocket 在npm上的文档 点击查看