如何从控制器NestJS访问Socket.IO客户端ID? [英] How to access socket.io client id from controller NestJS?
本文介绍了如何从控制器NestJS访问Socket.IO客户端ID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发网络挂钩上的聊天支持。我使用聊天聚合器,这不是我的个人服务。因此,每次来自Support的任何消息都是在我的控制器中接收的,任务是通过websockets
将该消息传递给我的客户端。问题是我不能向特定套接字发送消息,所以我需要知道它的id。
具有以下代码:
@Controller('chat')
export class ChatController {
@UseInterceptors(CamelCaseConverterInterceptor)
@Post()
getExternalMessage(
@Body() payload: WebhookChatMessageDto,
@ConnectedSocket() client: Socket,
): void {
... code
}
}
我希望获取当前套接字客户端ID,但看起来@ConnectedSocket()
修饰器在控制器中不起作用。有什么想法吗?
推荐答案
您不需要在控制器方法中使用修饰符。第一个参数是套接字,第二个是有效负载。因此,在您的方法中:
getExternalMessage(
client: Socket,
payload: WebhookChatMessageDto,
): void {
console.log(client.id); //client id
client.emit(...); //emit to this client
}
但如果要使用WebSocket终结点,则不应使用@Post(),而应使用@SubscribeMessage(‘omeMessage’)。在POST请求中,您将永远无法访问套接字客户端,因为这是通过不同端口进行通信,并且您不能将POST请求与用户Socket.IO连接配对
这篇关于如何从控制器NestJS访问Socket.IO客户端ID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文