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

我在 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,但在服务器端,什么都没有:/


拉莫斯之舞
浏览 511回答 2
2回答

红糖糍粑

工作解决方案:客户端 :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);}}

qq_遁去的一_1

您不能对SubscribeMessage. 尝试用另一个事件名称替换它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript