【发布时间】:2019-10-19 05:07:31
【问题描述】:
我在socket.io中使用nestjs后端和Vuejs前端,需要查看用户是否“isAlive”。
我尝试 ping 服务器端和 pong 客户端,但服务器端什么都做...
服务器端(nest.js)
@WebSocketGateway({
pingTimeout: 100
})
export class LockGateway {
@SubscribeMessage('ping')
ping(socket: Socket, data: any) {
console.log(`Ping with ${data.toString()}`);
socket.emit('pong', (response) => {
console.log(`Response from client side : ${response.toString()}`);
});
}
}
客户端(vuejs/ts)
this.socket.on('pong', () => {
console.log('PONG I m alive');
this.socket.emit('ping', 'I m alive');
});
在客户端,我在 pong 中拥有所有 console.log,但在服务器端,什么都没有:/
【问题讨论】:
-
你有没有尝试增加ping超时,可能没有pong的时间超过100
-
pingTimeout没有任何改变,我改变了策略,并使用addEventListener和window.setTimeout(this.doInactive, this.timeoutInMiliseconds);测试客户端不活动状态
标签: javascript typescript websocket socket.io nestjs