websocket
WebSocket
是HTML5新增的协议,它的目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,比如说,服务器可以在任意时刻发送消息给浏览器。
·websocket
t在各种电商的网站运用的比较常见(在线聊天)
在H5
之前还多都是运用一个定时器来向服务器发送ajax
请求
使用
首先先安装两个框架
- ws
- express或koa
npm install -S ws express
客户端代码
- 先创建websocket实例,并且建立连接
- 通过
ws.send()
给服务端发送请求 onmessage
里的参数event来接收服务端返回来的响应
methods: {
outputMessage() {
var ws = new WebSocket("ws://localhost:3000/ws/chat");
let _this = this;
ws.onopen = () => {
// 点击发送按钮,将文本框的信息发送服务端
ws.send(_this.data);
};
},
webSocket() {
var ws = new WebSocket("ws://localhost:3000/ws/chat");
let _this = this;
ws.onmessage = function(event) {
console.log(event);
_this.message.push(event.data);
};
},
mounted() {
this.webSocket();
}
}
}
服务端代码
- 首先通过
ws.Server
创建WebSocketServer
构造函数 new WebSocketServer
里指定的server
是监听的端口的返回值- 通过
WebSocketServer
创建的实例,监听connection
事件来连接,回调函数里有ws
参数 - 通过监听
ws
里的message
来拿到前端返回的数据 - 拿到数据则需要给客户端进行响应
- 具体参考以下代码
const Koa = require("koa");
const ws = require("ws");
const app = new Koa();
let server = app.listen(3000, () => {
console.log("running...")
});
let WebSocketServer = ws.Server;
let wss = new WebSocketServer({
server: server
})
wss.broadcast = function (data) {
wss.clients.forEach(function (client) {
client.send(data);
});
};
wss.on("connection", function (ws) {
ws.wss = wss;
ws.on('message', function (message) {
console.log(message);
this.wss.broadcast(message);
});
})