Node.js - WebSocket работает только при обновлении страницы - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь связаться с веб-сокетом в Node.js. Это работает, когда страница открывается впервые, но я не могу получать сообщения, не обновив страницу позже.

HTML СТРАНИЦА КОДА САЙТА:

var ws ;

function init() {
   ws = new WebSocket('ws://localhost:40510');

    ws.onopen = function () {
       ws.send('test')
    }

     ws.onmessage = function (ev) {
      console.log(ev)
    }
 }

  window.addEventListener("load", init, false);

КОД СТОРОНЫ СЕРВЕРА:

app.get('/sayfayiYenile', function (req, res) {
 wss.on('connection', function connection(ws) {
    ws.send('abc');
  });
  res.end('test')
});

CHROME КОНСОЛЬ:

MessageEvent {isTrusted: true, data: "abc", origin: "ws://localhost:40510", lastEventId: "", source: null, …}

Когда я нажимаю кнопку, она переходит в метод записи '/ sayfayiYenile' на стороне сервера, но не отправляет сообщение. Затем я обновляю sh страницу HTML и отправляю сообщение.

1 Ответ

0 голосов
/ 23 января 2020

Ваш .get метод не отправляет сообщение, вместо этого он оборачивает .on("connection") websocket logi c. Вы должны поместить функциональность ws.on вне .get и внедрить logi c, чтобы отправить сообщение на указанное c соединение.

Пример:

const connections = [];

wss.on('connection', function connection(ws) {
  ws.send("Welcome...");

  // Store the list of connections for later use
  connections.push(ws);
});

app.get('/sayfayiYenile', function (req, res) {
  // Iterate over the current connected clients and send a message
  // @todo implement logic here to filter out specific connections
  connections.forEach(function(connection) {
    connection.send('abc');
  });
});
...