如何从nestjs服务传递套接字客户端连接 [英] How to pass socket client connection from nestjs service

查看:0
本文介绍了如何从nestjs服务传递套接字客户端连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望将连接的套接字客户端传递给嵌套js服务。我提到了这个问题 https://stackoverflow.com/question....。但我无法理解如何从我的服务传递client:Socket

我有一个处理一些文件处理任务的大队列。一旦文件处理完成。我想通知发送该文件的用户。下面是我的WebSocket网关。这里的notifyJobStatus是在工作完成后被调用。但我想把它寄给一个特定的客户。为此,我需要从我的服务访问客户端。然后我可以将方法修改为如下所示notifyJobStatus(status: string, client: Socket)。如果此方法错误,请纠正我。

export class NotificationsService
  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect
{
  @WebSocketServer() server: Server;
  private readonly logger = new Logger(NotificationsService.name);

  notifyJobStatus(status: string) {
    //client.broadcast.to(client.id).emit('JobStatus', status);
    this.server.emit('JobStatus', status);
  }

  afterInit() {
    this.logger.log('Websocket Server Started,Listening on Port:3006');
  }

  handleDisconnect(client: Socket) {
    console.log(`Client disconnected: ${client.id}`);
  }

  handleConnection(client: Socket, ...args: any[]) {
    console.log(`Client connected: ${client.id}`);
  }
}

推荐答案

如果这是您的网关,我猜它设置不正确。Nestjs中的网关形式如下:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
@WebSocketGateway()
export class NotificationsService
  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect
{
  @WebSocketServer() server: Server;
  private readonly logger = new Logger(NotificationsService.name);

  @SubscribeMessage('event to listen to')
  notifyJobStatus(status: string) {
    //client.broadcast.to(client.id).emit('JobStatus', status);
    this.server.emit('JobStatus', status);
  }

  afterInit() {
    this.logger.log('Websocket Server Started,Listening on Port:3006');
  }

  handleDisconnect(client: Socket) {
    console.log(`Client disconnected: ${client.id}`);
  }

  handleConnection(client: Socket, ...args: any[]) {
    console.log(`Client connected: ${client.id}`);
  }
}

同时,由于您使用的是一个强制队列来处理作业,因此您可以从处理该作业的强制队列使用者发出作业状态,@SubscribeMessage(‘Event to Listen’)将监听该作业状态,并且将调用notfyJobStatus方法将该状态发送给用户。

这篇关于如何从nestjs服务传递套接字客户端连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆