Пожалуйста, внимательно прочитайте перед маркировкой как дубликат.Я прочитал и знаю о области применения, и вопрос ниже не о том, почему метод не возвращает правильный ответ.Речь идет о том, почему сокет извлечения испускает пустой объект, когда я использую сокеты, или лучше сказать, как я могу получить объект, который будет отправлен через сокет emit.
Мне было трудно понять, почему, когдаЯ вызываю приведенный ниже метод в клиенте сокета и затем выполняю команду emit, другая сторона сокета получает пустой объект '{}' вместо результата.Когда я запускаю раздел метода без сокетов, я получаю правильный ответ.
С socket.io
export async function performSearch(options: ISearchEntityRequest, callingMethod?: string): Promise<IActionResponse<ISearchEntityResponse>> {
const baseSearchRequest = Object.assign({}, BASE_SEARCH_REQUEST, options);
let response = <IActionResponse<ISearchEntityResponse>>{};
const io = require('socket.io-client');
const socket = io.connect();
socket.on('connect', function (data) {
socket.on('fetchShareClasses', async function (searchResponse) {
searchResponse = await fetch(ENDPOINTS.fund.searchEntity, generateRequest('POST', baseSearchRequest));
socket.emit('fetchShareClasses', JSON.stringify(searchResponse));
response = searchResponse;
return response;
});
});
return Promise.resolve(response);
}
const BASE_SEARCH_REQUEST: ISearchEntityRequest = {
type: 'FUND',
search: [],
include: {},
culture: 'en-GB',
applyFormats: false,
start: 0,
limit: 100,
};
И без сокетов:
export async function performSearch(options: ISearchEntityRequest, callingMethod?: string): Promise<IActionResponse<ISearchEntityResponse>> {
const baseSearchRequest = Object.assign({}, BASE_SEARCH_REQUEST, options);
let response = <IActionResponse<ISearchEntityResponse>>{};
const io = require('socket.io-client');
const socket = io.connect();
const request = await fetch(ENDPOINTS.fund.searchEntity, generateRequest('POST', baseSearchRequest));
if (request.ok) {
response.data = Object.assign({}, await request.json());
}else {
response.error = new Error(request.statusText);
}
return response;
}
Спасибо