如何在 ruby​​ on Rails 中通过 websocket 发送保活数据包

2024-02-03

我想发送一个

“与客户保持联系”

我的 websocket 连接每 30 秒发送一条消息。我的 websocket 初始化程序中的代码如下所示:

ws = WebSocket::Client::Simple.connect 'wss://bitcoin.toshi.io/'

ws.on :message do |msg|
  rawJson = msg.data
  message_response = JSON.parse(rawJson)
end

ws.on :open do
  ws.send "{\"subscribe\":\"blocks\"}"
end

ws.on :close do |e|
  puts "WEBSOCKET HAS CLOSED #{e}"
  exit 1
end

ws.on :error do |e|
  puts "WEBSOCKET ERROR #{e}"
end

如果没有任何形式的“保持活动”,连接将在大约 45 秒内关闭。我应该如何发送“心跳”数据包?看来连接是被他们的服务器关闭的,而不是我的。


您可以使用Websocket Eventmachine 客户端 https://github.com/imanel/websocket-eventmachine-clientgem 发送心跳:

require 'websocket-eventmachine-client'

EM.run do
  ws = WebSocket::EventMachine::Client.connect(:uri => 'wss://bitcoin.toshi.io/')
  puts ws.comm_inactivity_timeout
  ws.onopen do
    puts "Connected"
  end

  ws.onmessage do |msg, type|
    puts "Received message: #{msg}"
  end

  ws.onclose do |code, reason|
    puts "Disconnected with status code: #{code}"
  end

  EventMachine.add_periodic_timer(15) do
    ws.send "{}"
  end
end

您可以使用以下命令为 EventMachine 设置计时器EM::add_periodic_timer(interval_in_seconds),然后发送你的心跳。

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

如何在 ruby​​ on Rails 中通过 websocket 发送保活数据包 的相关文章

随机推荐

  • 全新重新安装后删除 iOS 推送通知

    我有一个已成功集成苹果推送通知的应用程序 当用户登录到应用程序时 应用程序会注册推送通知 并且令牌会保存在我们的后端 当用户从应用程序注销时 我们会从我们的应用程序中删除推送通知令牌后端 但是如果用户在没有从应用程序注销的情况下从设备上卸载
  • 使用 Python 在 CATIA 中创建新产品

    我正在使用 Python 脚本自动创建新产品 但遇到了交互式事件卡在 零件编号 对话框中的问题 当创建新零件而只是创建新产品时 不会发生这种情况 以下是脚本的适用部分 CATIA 已打开 import win32com client dyn
  • NuGet:如何使用 Install.ps1 文件更改文件的属性?

    我正在创建 NuGet 包 并为此创建了 Nuspec 清单文件 在content文件夹我有两个文件 test exe and test config 现在 当任何用户安装此软件包时 我想将这些文件的属性 复制到输出目录 更改为项目中的 始
  • 如何通过 htaccess 将目录中的所有文件重定向到根目录中的另一个目录

    我想重定向所有文件 无论是否存在 user我网站上的目录到一个名为temp php通过 htaccess 在根目录中 例如 如果用户输入用户 send php or user or 用户 发送 可能根本不存在 全部重定向到temp php
  • 在 Visual Studio Code 中禁用基于单词的建议

    我想要禁用基于单词的建议 在我看来这很烦人而且没用 例如 括号将提供变量 方法和语言的建议 不会污染建议列表将所有类似的单词写入文件中 我只是想要代码建议 我试过 editor wordBasedSuggestions false 但没有运
  • CUDA racecheck、共享内存数组和 cudaDeviceSynchronize()

    我最近发现了比赛检查的工具cuda内存检查 在 CUDA 5 0 中可用 cuda memcheck tool racecheck 参见英伟达文档 http docs nvidia com cuda cuda memcheck index
  • jQuery UI:将项目从一个列表移动到另一个列表

    虽然这should相对简单 我不知道如何移动 而不是复制 LI之间的元素ULs 我想要的只是从列表中拖动任何项目foo列出bar 或反之亦然 而不重复元素 While connectToSortable几乎完全符合我想要的 尽管我宁愿避免s
  • 命名空间不能直接包含成员? [复制]

    这个问题在这里已经有答案了 我有个问题 我一直在关注教程 以便我可以学习使用 Xamarin 进行编程 现在我有这个错误行 我已经在标题中写下了 这是给大家的代码 using System Collections ObjectModel u
  • 以编程方式访问函数位置

    是否可以通过代码访问 FunctionLocation 使用控制台登录功能时谷歌浏览器开发人员工具显示的属性 目前的答案是no The FunctionLocation 您在 Inspector 中看到的属性已添加到V8Debugger i
  • 无法绑定到“ngModel”,因为它不是“ion-select”的已知属性

    大家好 当我在产品版本中编译我的应用程序时 出现错误 无法绑定到 ngModel 因为它不是 ion select 的已知属性 My code
  • 对 SharePoint 列表的 CAML 查询返回整个集合

    我遇到了一个问题 如果我在 C 中执行 CAML 查询 我的 ListItemCollection 将包含整个列表 这是一个片段 我擦洗过的代码也许你可以看到我做错了什么 在调试时 我发现生成的 XML 正是我所期望的从文件读取的值 似乎有
  • 在函数中包含库调用?

    将执行该函数所需的每个库包含在该函数中是一个好习惯吗 例如我的文件global r包含我需要一个闪亮的应用程序的几个功能 目前我在文件顶部有所有需要的包 当我切换项目 复制这些函数时 我必须加载包 将它们包含在新代码中 否则 所有需要的包都
  • extjs 5网格的滚动条在边框布局面板中不起作用

    在边框布局面板中 即使网格存储足够长 导致网格溢出 网格的滚动条也无法正常工作 如果我的网格位于无边框布局面板中 则滚动条是可以的 但是当我将网格放入边框布局面板中时 要么没有滚动条 要么有无效的滚动条 what i want is to
  • 在 VS 中发布网站时@import“theme.css”不起作用

    我有一个网站 它依赖于 jquery ui theme css 的一些 css 样式 当我在本地运行我的项目时 这工作正常 但是当我发布和部署时 这些特定的样式不会被选择 例如 当我在本地检查对话框关闭按钮时 它会显示标准的十字图像 但在发
  • sql server:必要时在外键上创建索引

    我有很多带有外键的表 有些有索引 而另一些则没有 所有外键均已命名FK
  • th:复选框中字段属性的值

    我有一个包含数据库数据的表 动态插入 在一列中我插入复选框 现在我想选择其中一个并发送到下一个表单 我选择一个产品并将属性发送到另一个表单 在此表单中应仅显示所选产品的属性 但我不知道 th field 中插入什么样的值 我尝试了很多解决方
  • 安排连续气流 DAG 运行

    有没有办法循环运行气流 DAG 当尝试创建一个循环 将最后一个组件连接到最后一个组件的上游 时 我收到 在 DAG 中检测到循环 错误任务 一般来说 我有一个简短的 3 个 BashOperator 组件流程 我想连续运行它们 从最后一个组
  • 类型错误:jQuery.browser 未定义

    我正在使用 jquery mobile 1 4 2 和脚本 1 11 0 我已经阅读过之前提出的有关此问题的问题 但我不知道如何在我的代码中使用 这是我的代码 script jQuery input name cat bind jQuery
  • ActionBar Compat 的自定义(渐变)背景

    我正在使用 Action Bar Compat 以便我的带有导航抽屉的操作栏向后兼容至 API 级别 9 并且我想更改操作栏的背景 我复制了代码安卓开发者 https developer android com training basic
  • 如何在 ruby​​ on Rails 中通过 websocket 发送保活数据包

    我想发送一个 与客户保持联系 我的 websocket 连接每 30 秒发送一条消息 我的 websocket 初始化程序中的代码如下所示 ws WebSocket Client Simple connect wss bitcoin tos