У меня есть 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()
.
https://www.linode.com/docs/development/introduction-to-websockets/
Эта статья может помочь вам правильно понять websocket и как вы можете слушать функции без setInterval