nodeJS setinterval不退出回调

nodeJS setinterval doesn't exit callback

我正在用 socket.io 编写一个包含 setInterval 函数的程序。 但是我一直得到错误的答案,然后我编写了一个基本设置,其中包含 2 个计数器,一个客户端和一个服务器端,它们必须每 500 毫秒刷新一次,但只有客户端将数据记录在控制台中。这就像 setInterval 保留了来自 运行.

的其他代码

这是代码

服务器。

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);
});`

客户

<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>

我知道之后我必须清理我的 setInterval,但此代码仅用于测试原因

请在日志中找到更多详细信息的相同解决方案:- 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');
});

client script

var socket = io();

 // 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.
  }

您的解决方案是正确的,但请注意,当客户端发出消息时,它将显示在节点终端或控制台上,而当服务器发出消息时,它将在浏览器控制台上可见。

希望对您有所帮助。