我在 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,但在服务器端,什么都没有:/
2 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
工作解决方案:
客户端 :
this.socket.on('isAvailable', () => {
this.socket.emit('keepAlive', socketClient.userUid);
});
服务器端:
@SubscribeMessage('join')
join(socket: Socket, data: any) {
if (data.userUid != null) {
this.userUid = data.userUid;
}
if (data.userUid && data.userUid !== ANONYMOUS_USER) {
this.keepAliveInterval = setInterval(() => {
socket.emit('isAvailable');
}, RETRY_EACH);
this.setOfflineTimeout(socket, data.userUid);
}
}
添加回答
举报
0/150
提交
取消