У меня есть 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()
.