[英]How to Implement real-time chatting using node.js and Socket.io in react-native?
[英]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.