Socket.io не испускает объект из выборки - PullRequest
0 голосов
/ 24 декабря 2018

Пожалуйста, внимательно прочитайте перед маркировкой как дубликат.Я прочитал и знаю о области применения, и вопрос ниже не о том, почему метод не возвращает правильный ответ.Речь идет о том, почему сокет извлечения испускает пустой объект, когда я использую сокеты, или лучше сказать, как я могу получить объект, который будет отправлен через сокет 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;
}

Спасибо

...