Node.js nodeJS setinterval不';t退出回调
我正在用socket.io编写一个包含setInterval函数的程序。 但我一直得到错误的答案,然后我编写了一个基本设置,其中有两个计数器,一个客户端和一个服务器端,它们必须每500毫秒刷新一次,但只有客户端将数据记录在控制台中。这就像setInterval阻止其他代码运行一样 这是密码 服务器Node.js nodeJS setinterval不';t退出回调,node.js,socket.io,setinterval,Node.js,Socket.io,Setinterval,我正在用socket.io编写一个包含setInterval函数的程序。 但我一直得到错误的答案,然后我编写了一个基本设置,其中有两个计数器,一个客户端和一个服务器端,它们必须每500毫秒刷新一次,但只有客户端将数据记录在控制台中。这就像setInterval阻止其他代码运行一样 这是密码 服务器 io.on('connect', function(socket){ console.log("test"); io.sockets.on('count', func
io.on('connect', function(socket){
console.log("test");
io.sockets.on('count', function (data) {
console.log(data);
});
setInterval(function(){var count=0;
for (i = 0; i < 10; i++) {
count = count + 1;
socket.emit('count', count);
}},500);
});`
io.on('connect',函数(套接字){
控制台日志(“测试”);
io.sockets.on('count',函数(数据){
控制台日志(数据);
});
setInterval(函数(){var count=0;
对于(i=0;i<10;i++){
计数=计数+1;
socket.emit('count',count);
}},500);
});`
客户
<script>
var socket = io();
var count=0;
socket.on('count', function (data) {
console.log(data);
});
for(i=0;i<10;i++){
count = count +1;
socket.emit('count',count);
}
</script>
var socket=io();
var计数=0;
socket.on('count',函数(数据){
控制台日志(数据);
});
对于(i=0;i请在日志中找到相同的解决方案,并提供更多详细信息:-
server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('count', function(data){
// client message will be logged here
console.log(" client message " + data);
});
setInterval(function(){var count=0;
for (var i = 0; i < 10; i++) {
count = count + 1;
socket.emit('count', " server count " + count);
console.log(" server message " + count); // this i server message sent to client
}},500);
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
您的解决方案是正确的,但请注意,当客户端发出消息时,它将显示在节点终端或控制台上,当服务器发出消息时,它将显示在浏览器控制台上
希望这能对您有所帮助。我在服务器上没有看到{console.log(“client message”+data);}这是服务器端io.sockets.on('count',function(data){console.log(data);})的客户端消息;是的,但这不应该登录到我的nodeJs控制台吗?是的,它会登录到nodeJs控制台,但不会登录到浏览器控制台。我写了上面的代码来帮助您理解客户端信息将被传递到服务器,这就是为什么我要放置console.log(“客户端消息”),请让我知道您是否需要关于这一点的更多信息。我在每个日志后都更新了评论,如果您在这方面有任何问题,请让我知道。
// Add a connect listener
socket.on('connect',function() {
console.log('Client has connected to the server!');
});
// Add a disconnect listener
socket.on('disconnect',function() {
console.log('The client has disconnected!');
});
var count=0;
socket.on('count', function(data){
console.log("server message" + data); // this is message come from server
});
for(var i=0;i<10;i++){
count = count +1;
socket.emit('count',count); // client sends this information to server.
}