首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS应用程序的Socket.io正常运行时间?

NodeJS应用程序的Socket.io正常运行时间?
EN

Stack Overflow用户
提问于 2021-01-13 21:10:32
回答 1查看 52关注 0票数 0

我有一个运行网站的Node.JS express服务器,我想为用户添加一个网站的在线正常运行时间到前端。目前,当用户请求页面时,我将数据传递到网站。我希望有正常运行时间显示现场(更新的页面生活),我已经尝试使用socket.io与此代码。

代码语言:javascript
运行
复制
io.sockets.on('connection', function(sockets){
  var uptime = process.uptime();
  const date = new Date(uptime*1000);
  const days = date.getUTCDate() - 1,
        hours = date.getUTCHours(),
        minutes = date.getUTCMinutes(),
        seconds = date.getUTCSeconds(),
        milliseconds = date.getUTCMilliseconds();
  let segments = [];
  if (days > 0) segments.push(days + ' day' + ((days == 1) ? '' : 's'));
  if (hours > 0) segments.push(hours + ' hour' + ((hours == 1) ? '' : 's'));
  if (minutes > 0) segments.push(minutes + ' minute' + ((minutes == 1) ? '' : 's'));
  if (seconds > 0) segments.push(seconds + ' second' + ((seconds == 1) ? '' : 's'));
  const dateString = segments.join(', ');

  io.sockets.emit('count', {count:dateString})
})

它似乎工作了2秒(更新两次),然后没有更多的数据被发送到前端。关于如何将process.uptime();发送到前端,有什么想法吗?干杯

编辑:我需要添加一个setInterval(function()并从一个const更新dateString这里是服务器更新后的代码,

代码语言:javascript
运行
复制
io.sockets.on('connection', function(sockets){
  setInterval(function(){ 
    var uptime = process.uptime();
    const date = new Date(uptime*1000);
    const days = date.getUTCDate() - 1,
      hours = date.getUTCHours(),
      minutes = date.getUTCMinutes(),
      seconds = date.getUTCSeconds();
    let segments = [];

    if (days > 0) segments.push(days + ' day' + ((days == 1) ? '' : 's'));
    if (hours > 0) segments.push(hours + ' hour' + ((hours == 1) ? '' : 's'));
    if (minutes > 0) segments.push(minutes + ' minute' + ((minutes == 1) ? '' : 's'));
    if (seconds > 0) segments.push(seconds + ' second' + ((seconds == 1) ? '' : 's'));
    dateString = segments.join(', ');
    
    sockets.emit('count',{count:dateString}); }, 1000);
})

和客户端代码

代码语言:javascript
运行
复制
    <script>
      var socket = io();
      socket.on('count', function(data){
        $('#count').html(data.count);
      });
    </script>

结果:

EN

Stack Overflow用户

回答已采纳

发布于 2021-01-13 21:20:03

当客户端连接时,您似乎只向连接的客户端发出正常运行时间。每次客户端连接时,“connection”事件下的函数都会运行。

如果你想让它自动运行(比方说,每秒钟),你可以设置一个间隔,每秒发出正常运行时间状态。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65702653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档