使用 websockets 和 SocketIO 防止“心跳超时”

2024-01-07

我正在使用 NodeJS 和 SocketIO 作为我的 websocket 解决方案。它工作正常,但几分钟后,我的套接字服务器总是超时,并在控制台中显示以下消息:

debug - fired heartbeat timeout for client
info - transport end <heartbeat timeout>
debug - set close timeout for client
debug - cleared close timeout for client
debug - discarding transport

这是我完整的server.js file:

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')

app.listen(3000);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {

  socket.emit('news', { hello: 'from socket server' });

  socket.on('swipe', function (from, msg) {
     console.log('I received a private message by ', from, ' saying ', msg);
     socket.emit('swipe event received on server!');
  });

如何防止超时发生?


查看关闭超时 and 心跳超时选项here https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

您可以通过以下方式在服务器上以编程方式设置这些:

var io = require('socket.io').listen(80);
io.set('close timeout', 60);
io.set('heartbeat timeout', 60);

至于您的应用程序的设计,您应该检查一下this https://stackoverflow.com/questions/14914768/is-it-safe-to-set-a-high-close-timeout-on-socket-io关于是否应该更改超时的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 websockets 和 SocketIO 防止“心跳超时” 的相关文章

  • 如何用Java处理来自客户端的Websocket消息?

    我正在使用 Websocket 用 Ja va 开发客户端 服务器应用程序 目前 所有客户端消息均使用 switch case 进行处理 如下所示 OnMessage public String onMessage String unscr
  • NodeJS 如何在没有 WebSocket 的情况下处理持久连接?

    我对 NodeJS 真的很陌生 如果我对某些东西听起来很天真 我很抱歉 并且我一直在深入研究示例的源代码聊天应用 http github com ry node chat 但是 我无法理解一件事 我知道 WebSockets 有助于处理持久
  • 在 sails.js 中跟踪用户在线/离线状态

    我必须在我的 Web 应用程序中使用 sails js 中的 websockets 找出用户状态 即用户是否在线 离线 请帮我 多谢 从 Sails v0 9 8 开始 您可以使用onConnect and onDisconnect功能于c
  • 玩 Scala Akka WebSockets 更改 actor 路径

    我遵循使用 Scala Play 和 Akka Actor 创建 Web 套接字的示例 https www playframework com documentation 2 5 x ScalaWebSockets Handling Web
  • Netty:正确关闭 WebSocket

    如何从服务器端正确关闭 WebSocket 通道 连接 如果我使用一个ctx getChannel close the onerror在浏览器 Firefox 9 中抛出 页面加载时与 ws localhost 8080 websocket
  • 确定$.ajax错误是否是超时

    我正在利用魔法jQuery ajax settings 不过 我想知道是否有人经常使用超时设置 我知道它基本上是为了规定请求的本地时间 但是如果达到超时 它会触发任何事情吗 或者它只是停止监听响应 阅读 jQuery 站点 我可以看到没有传
  • WebSockets 监听 UNIX 域套接字?

    是否可以在 nginx 服务器后面设置一个 WebSockets 服务器来处理 UNIX 域套接字上的连接 我目前在同一台计算机上有多个 WebSocket 服务器实例 并且存在端口共享问题 所有实例都必须分配一个唯一的端口 我想避免这种情
  • React 中模型更改 11 次后 Froala 编辑器崩溃

    我在没有身份的情况下在线构建了一个简单的编辑器 在后端实现Node JS 与 Socket IO MongoDB 以及客户端使用React连接Socket IO 为了创建编辑器 我使用了弗罗拉编辑 https www froala com
  • 在node.js中使用socket.io设置服务器-服务器SSL通信

    我正在尝试使用 socket io 通过 ssl 连接来设置服务器到服务器的链接 这是我的例子 Server var app require express var config require config var https requi
  • 使用 Netty 将 websocket 与在 tomcat 中运行的 Spring Web 应用程序集成

    我有一个使用 Netty 的 Web 套接字服务器实现 例如监听端口 8081 和一个在 Tomcat 中运行的单独的 Spring Web 应用程序 在端口 80 中运行 我想以某种方式将所有来自 localhost 80 Websock
  • 运行 pm2 记录错误 SyntaxError: Unexpected token

    我想查看我的项目的日志 Steps 我克隆了一个套接字应用程序 然后我跑npm install pm2 g安装pm2 I run pm2 start 有用 它显示我的套接字应用程序的表格 但如果我跑pm2 logs查看日志 存在这样的错误
  • React Native Android 无法连接到 WebSocket

    尽管 Web 实现可以工作 但 android 模拟器以及我的设备无法连接到 WebSocket 在引发错误的地方收到以下事件错误代码 然后断开连接 connection error Event isTrusted false messag
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • WebSocket 无法与 DNS 配合使用

    我有一个网络应用程序 我正在使用 websockets 我在使用 ws myDomain com 作为 websocket 服务器的地址时遇到问题 这个问题很奇怪 因为我使用许多 PC 测试了连接 似乎这适用于大约 1 5 的 PC 当我将
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • 使用 Socket.io 向多个房间发送消息?

    是否可以使用socket io向多个房间发送消息 发送至 1 个房间 io sockets in room emit id 发送到N个房间 io sockets in room1 room2 roomN emit id 是的 可以同时发送到
  • 我的客户端 socket.io 在哪里?

    我使用 Express 和 React Engine 创建了一个同构 React 应用程序 现在我正在尝试连接socket io 在快速设置中我有 var express require express var app express va
  • 如何配置 Google 计算引擎以对 Nodejs 服务器使用 HTTPS?

    我想使用 https SSL 在 google 计算引擎中运行 nodejs 和 socket io 服务器 我安装了自签名证书https cloud google com compute docs load balancing http
  • socket.io 中的消息排序

    socket io 是否保证 on 回调将按照消息发出的顺序调用 Node js 是单个事件循环 所以是的 但是你还有另一个问题 考虑你和你的客户端之间的延迟 如果两个客户端发送消息 到达服务器的第一条消息将首先被处理 所以如果第一个客户端
  • 如何清除node.js中的超时

    您好 我们正在使用 node js socket io 和 redis 开发应用程序 我们有这个程序 exports processRequest function request result var self this var time

随机推荐

  • 发送多个 HTTP 请求

    我需要编写使用项目 ID 查找有关项目的信息的程序 该 API 一次仅获取一项 因此我只能对每项执行一次查询 API 仅限于五个同时请求 任何额外的结果都会给出 HTTP 429 错误 如果有一个 JavaScript 对象 其中包含所有带
  • WordPress:重置密码始终无效密钥

    我有一个很大的问题 找不到解决方案 我已经安装了 Ultimate Member Plugin 并激活了它 当我现在重置用户的密码时 我会从我的页面收到一封电子邮件 其中包含在class password phpUM函数调用触发的插件文件u
  • ember.js 中是否有一个回调,我可以在状态转换后渲染所有视图后使用它来运行代码?

    我有由三个出口组成的应用程序视图 提出自己的观点 简化
  • 为什么 CSS :not 伪类不能按预期工作?

    考虑以下 HTML div class a div class b Hello div div div class c div class b World div div 按照预期添加以下 CSS 颜色 仅 世界 为红色 c b color
  • 将输入文本字段从 HTML 获取到 JavaScript 并转到 URL

    如何将输入文本字段从 HTML 转换为 JavaScript 并转到 URL 我正在构建一个网页 您可以在输入字段中输入一些单词 Java 会获取该字符串并检查该字符串是否与另一个字符串相等 如果它转到某个 URL 我的代码是
  • Android 相机视频意图返回 null URI

    我最近更新到了 Android 4 3 每当我从应用程序中使用 Intent 启动它时 库存摄像机就开始表现得有点奇怪 起初它只是崩溃并说 图库停止响应 过了一会儿 我能够录制视频 但是单击 完成 会向我的应用程序返回一个空 URI 这导致
  • Perl 中的编译时间和运行时间

    我在读这个文件 http oreilly com catalog pperl3 chapter ch18 html了解 Perl 程序的生命周期 When do run时间和什么时候做compile在命令行上运行 Perl 脚本时发生时间事
  • 几秒钟后清除通知

    当您打开消息活动并且手机收到新消息时 状态栏上会显示一条通知 短时间后 通知将被删除 是否可以对我的活动执行相同的操作 而不使用计时器在几秒钟后清除通知 我不相信有一种方法可以仅使用NotificationManager来取消通知 但您可以
  • Jboss as 7 使用 HTTP 管理 api 进行部署

    如何使用 HTTP 管理 api 将存档部署到 Jboss as 7 我尝试使用从 RHQ 插件类创建的以下代码 公共类Main2 public static final String MANAGEMENT management publi
  • 硬盘序列号可以/为什么会改变

    我们的反盗版软件根据硬盘序列号来识别人员 我相信这是一个恒定的功能 除非用户更改其主要物理驱动器 否则不会改变 如果我错了 请纠正我 我们使用WMIpython模块获取用户的硬盘序列号 我们的 2 台测试计算机的硬盘序列号已更改 但我们根本
  • 为什么我们必须定义一个在类中初始化的 const 静态成员

    我们知道 可以在类结构内部初始化整型 const 静态成员 这在初始化后在类结构中使用常量时很有用 例如 它可以用作 int 数组的大小 看下面的代码 class MyClass static const int num 100 int e
  • 多个线程在同一全局内存位置写入相同的值

    这个问题与以下问题密切相关this one https stackoverflow com questions 8315931 does writing the same value to the same memory location
  • 在文本区域内建议/自动完成的 jQuery 插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个 jQuery 插件可以在文本区域内建议 自动完成 我想要的是在文本区域中向用户提供建议的单
  • 现代 C 和 C++ 中是否已弃用 f(void)? [复制]

    这个问题在这里已经有答案了 我目前正在重构 整理 C 项目中使用的一些旧 C 代码 并经常看到以下函数 int f void 我倾向于写成 int f 是否有任何理由不在整个代码库中将 void 替换为 以提高一致性 或者两者之间是否存在我
  • 如何使用 cassandra-cli 更新 gc_grace_seconds?

    更新列族并更改其列族的命令是什么gc grace seconds价值利用cassandra cli 对于CQLSH alter table
  • 为反应式管道编写方面

    我正在为返回承诺的方法编写方面 考虑以下方法 public Mono
  • 更新现有的 JobDataMap

    我有一份已经安排好的 Quartz 工作 我想更新与之关联的 JobDataMap 如果我得到一个 JobDataMapJobDataMap jobDataMap scheduler getJobDetail getJobDataMap 那
  • 防止 window.open 聚焦

    我想使用 window open 在 Google Chrome 的新选项卡中打开页面 但我不希望该窗口在打开后获得焦点 而是留在后台 这可能吗 它只需要在 Google Chrome 上运行 它还可以使用 Google Chrome 扩展
  • Pandas:从多索引中的日期中选择

    假设我有 MultiIndex 系列 date foo 2006 01 01 1 12931926 310 3 11084049 460 5 10812205 359 7 9031510 239 9 5324054 903 2007 01
  • 使用 websockets 和 SocketIO 防止“心跳超时”

    我正在使用 NodeJS 和 SocketIO 作为我的 websocket 解决方案 它工作正常 但几分钟后 我的套接字服务器总是超时 并在控制台中显示以下消息 debug fired heartbeat timeout for clie