【发布时间】:2018-09-11 18:02:44
【问题描述】:
我正在尝试在 Nest.js WebSocketGateways 中启用 socket.io 确认回调。
我希望能够发出这个:
socket.emit('event', 'some data', function (response) {
//do something
})
并像这样使用消息处理程序:
@SubscribeMessage('event')
onStart(client, data, ack) {
//Do stuff
ack('stuff completed');
}
根据this nestjs/nest GitHub issue 问题,库中不支持它,因此您必须构建自己的 websocket 适配器。我试过了,但不知道该怎么做。我想我需要在bindMessageHandlers 函数中做一些特别的事情,但我的尝试都是徒劳的。
这是框架中捆绑的默认 socket.io 适配器中的bindMessageHandlers 实现:
public bindMessageHandlers(
client,
handlers: MessageMappingProperties[],
process: (data: any) => Observable<any>,
) {
handlers.forEach(({ message, callback }) =>
Observable.fromEvent(client, message)
.switchMap(data => process(callback(data)))
.filter(result => !!result && result.event)
.subscribe(({ event, data }) => client.emit(event, data)),
);
}
有人对我将如何实现这一点有任何指示吗?
【问题讨论】:
标签: javascript socket.io nestjs