websocket使用ping-pong实现长连接
时间: 2024-06-09 19:08:28 浏览: 499
是的,WebSocket协议本身就是一种长连接协议,可以保持客户端与服务器之间的通信连接持续打开状态,以实现实时通信。而为了保持连接的稳定性,WebSocket使用ping-pong机制,即定期发送ping消息给服务器,如果服务器没有收到,就会发送pong消息回应客户端,以保持连接的活跃状态。
具体实现方式如下:
1. 客户端定期发送ping消息给服务器,可以使用setInterval方法定时发送。
2. 服务器收到ping消息后,需要及时回应pong消息,以保持连接的活跃状态。
3. 客户端收到pong消息后,可以忽略,因为它只是为了保持连接而发送的消息,不具有实际意义。
示例代码如下:
客户端实现:
```javascript
var ws = new WebSocket('ws://example.com/');
ws.onopen = function () {
setInterval(function () {
if (ws.readyState === WebSocket.OPEN) {
ws.send('ping');
}
}, 30000); // 每30秒发送一次ping消息
};
ws.onmessage = function (event) {
if (event.data === 'pong') {
// 忽略pong消息
}
};
```
服务器实现:
```javascript
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8080 });
wss.on('connection', function (ws) {
ws.on('message', function (message) {
if (message === 'ping') {
ws.send('pong');
}
});
});
```
阅读全文