为了账号安全,请及时绑定邮箱和手机立即绑定

服务器/客户端之间的 Nest.js socket.io ping/pong

服务器/客户端之间的 Nest.js socket.io ping/pong

拉莫斯之舞 2021-06-04 17:50:03
我在 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);

}

}


查看完整回答
反对 回复 2021-06-18
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您不能对SubscribeMessage. 尝试用另一个事件名称替换它。


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 496 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信