Как постоянно обновлять и отправлять данные с помощью WebSocket? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть ws.js, который является моим сервером:

// A simple server-side script.
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 3000 });

let number = 0.0;

function updateNumber(){
    number = Math.random().toFixed(4);
}

// Desperetly tried this.
var emitter = function() {}

var emission = function(data) {
  emitter(data);
}

// Then my WebSocket stuff.
wss.on('connection', function(ws) {
    emitter = function(data) {
        wss.clients.forEach(function(client) {
            // ---> How to constantly run updateNumber()
            // As long as connection is live.
            console.log(data);
            // Debug
            console.log('[server:onConnect] Received request.');
            // Send the transmission.
            console.log('[server:onConnection] Sending:', number);
            client.send(number);
        });
    }
});

Я должен сделать это без использования setInterval(), так как номер будет поступать из файла, который постоянно обновляется.

Итак, в потоке многословия моего сервера, в терминале я получаю это, как только клиент подключается:

[server:onConnection] Sending: 0.9569
[server:onConnect] Received request.
[server:onConnection] Sending: 0.4058
[server:onConnect] Received request.
[server:onConnection] Sending: 0.7813
[server:onConnect] Received request.
[server:onConnection] Sending: 0.9672
[server:onConnect] Received request.
[server:onConnection] Sending: 0.0671
[server:onConnect] Received request.
[server:onConnection] Sending: 0.5682
[server:onConnect] Received request.
[server:onConnection] Sending: 0.0171

--- ОБНОВЛЕНИЕ ---

Проблема исправлена, когда я настроил функцию updateNumber() следующим образом:

function updateNumber(){
    number = Math.random().toFixed(4);
    emission();
}

Похоже, это успешно соединяет функцию emitter, заложенную в блоке on connect, и функцию updateNumber().

Однако для этого решения все еще требуется setInterval() для запуска updateNumber(), чтобы создать эмиссию постоянно меняющегося числа. Есть ли способ создать функцию, которая запускает и постоянно выдает случайное число, не используя setInterval().

1 Ответ

0 голосов
/ 01 ноября 2018

https://www.linode.com/docs/development/introduction-to-websockets/

Эта статья может помочь вам правильно понять websocket и как вы можете прослушивать функции без setInterval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...