Клиент Nodejs Websockets ожидает обещание - PullRequest
1 голос
/ 04 мая 2019

Попытка перехватить все данные из соединения через веб-сокет как клиент nodejs, используя обещание. Скрипт завершается до получения всех сообщений и console.logging 'Promise { <pending> }', я ожидал, что он запишет 'response # 1 | до свидания».

const WebSocket = require('ws');
const ws = new WebSocket('wss:url');

let results = new Promise(function(resolve, reject) {
    ws.on('open', function open() {
      ws.send('hello');
    });
    let receivedResults = '';
    ws.on('message', function incoming(data) {
        if (data == 'goodbye') {
            receivedResults += ' | ' + data;
            resolve(result);
        } else {
            receivedResults = data;
        }
    });
});
console.log(results);

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

В данный момент вы печатаете results это просто объект обещания в состоянии ожидания, ожидающий разрешения, в тот момент вы не получите результат, он был создан недавно. Чтобы дождаться решения, вам нужно выполнить метод обещания then:

results.then(myResponse => {
 console.log(myResponse);
 // do more...
});

Я рекомендую этот доклад, чтобы понять асинхронное поведение на node.js https://www.youtube.com/watch?v=8aGhZQkoFbQ

0 голосов
/ 04 мая 2019

Для того, чтобы он зарегистрировал response #1 | goodbye, вам нужно будет дождаться его разрешения.

results.then(data => console.log(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...