Как постоянно обновлять и отправлять данные с помощью WebSocket?

1

У меня есть 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() поскольку число будет поступать из файла, который постоянно обновляется.

Таким образом, в моем потоке verbosity сервера, в терминале я получаю это, как только клиент подключается в:

[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() функцию updateNumber() как:

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

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

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

Теги:
websocket

1 ответ

0

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

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

  • 0
    Спасибо, это отличный ресурс. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню