Если вы просто возвращаете простые данные, функция подтверждения (обратного вызова) будет автоматически вызываться гнездом:
@SubscribeMessage('startSearch')
async onStartSearch(socket, data) {
if (Joi.validate(data, requestSchema).error) {
return {
status: 'error',
reason: 'invalid params format',
};
}
}
Но вы также можете работать без функции обратного вызова (например, при работе с nativeсокеты, которые не поддерживают функцию обратного вызова):
Методы @SubsribeMessage
также могут возвращать Observable<WsResponse<any>>
.WsResponse
содержит имя события и полезную нагрузку {event: string, data: any}
.
@SubscribeMessage('startSearch')
async onStartSearch(socket, data): Observable<WsResponse<any>> {
if (Joi.validate(data, requestSchema).error)
return of({event: 'searchResponse', data});
}
Затем просто прослушайте ответ на вашем клиенте:
socket.on('searchResponse', function (data) {
console.log('event', data);
});