簡體   English   中英

關於so​​cket.io實時文本顯示的問題

[英]Issue about socket.io real-time text display

我正在嘗試使用node.js和socket.io庫在客戶端和服務器之間建立websocket連接。 服務器將每秒生成一個隨機數,並將發出一個事件,客戶端可以檢測到該事件。

問題是客戶端(網頁)可以檢測到該事件並顯示服務器發送的隨機數,但這不是實時的。 我必須刷新瀏覽器才能顯示新的隨機數。 我希望客戶端實時顯示隨機數,但我不知道為什么我的websocket應用似乎不是實時的。

Server(main.js)源代碼:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

app.get('/', function(req, res){                  
    res.sendFile(__dirname + '/index.html');
});

randomNum();

function randomNum(){
    io.on('connection', function(socket){
        socket.emit('random', Math.floor((Math.random() * 100) + 1));
    });
    setInterval(randomNum, 1000);
}

server.listen(8080);

Client(index.html)源代碼:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Websocket</title>

<script src="/socket.io/socket.io.js"></script>

<script>
var socket = io();
socket.on('random', function(data){
    document.getElementById("displayNum").innerHTML = data;
});
</script>

</head>

<body>
<p id="displayNum"></p>
</body>
</html>

您不應該這樣做:

function randomNum(){
    io.on('connection', function(socket){
        socket.emit('random', Math.floor((Math.random() * 100) + 1));
    });
    setInterval(randomNum, 1000);
}

您每1秒設置一次io.on連接。 您應該使函數在此函數之外發出隨機的和設置的間隔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM