使用socket.io和node.js的倒数计时器广播



我正在用node.js构建新版本的应用程序。在下面,您会找到我的获胜者倒计时,其中console.log(counter)的输出需要用socket.io广播给所有客户。

var counter = 10;
var WinnerCountdown = setInterval(function(){
  console.log(counter);
  counter--
  if (counter === 0) {
    console.log("Congratulations You WON!!");
    clearInterval(WinnerCountdown);
  }
}, 1000);

我的socket.io代码如下:

setInterval(() => {
  wss.clients.forEach((client) => {
    client.send(new Date().toTimeString());
  });
}, 1000);

我应该替换 new Date().toTimeString(),以便它显示console.log的消息?

向所有客户端进行广泛铸造,您可以使用io.sockets.emit('counter', counter);。这是您可以用来实现(我认为)您要做的事情的脚本的示例:

server.js

io.on('connection', function(socket){
  var counter = 10;
  var WinnerCountdown = setInterval(function(){
    io.sockets.emit('counter', counter);
    counter--
    if (counter === 0) {
      io.sockets.emit('counter', "Congratulations You WON!!");
      clearInterval(WinnerCountdown);
    }
  }, 1000);
});

客户端

var socket = io();
socket.on('counter', function(count){
  $('#messages').append($('<li>').text(count));
});

希望这会有所帮助,如果您有任何后续问题,请发表评论!

最新更新