在 Web 视图上显示来自 telnet 接口的高速数据的最佳方式?

2024-01-25

我想在 Web 视图上显示来自 telnet 接口的数据。我正在运行一个守护进程,它读取 CAN 总线数据并在 telnet 端口上每秒生成约 500 行约 40 个字符。其中一些消息以 100 Hz 运行,而大多数其他消息以 10 或 5 Hz 运行,因此总计约为 500 条/秒。我想获取每个数据包中的最新值并将其显示在网页上。网页是在本地加载的(不是通过 HTTP),并且守护进程可能位于不同的主机上,因此存在跨域通信。

这是我尝试过但失败的事情:

  1. 使用 XMLHttpRequest。我可以打开连接并读取数据,但当我收到 onprogress 事件时,无法清除先前值的responseText 字段。我无法解析responseText 的最新值,因为它增长得非常快。我还会遇到内存问题,所以这是不行的。
  2. WebSockets 和 Socket.IO:在连接到 telnet 接口方面都没有被证明是成功的,因为它首先期望 HTTP 然后转换为直接套接字。

所以我的问题是,我怎样才能最好地实现这一目标?我看到了一些选项,但我确信还有更多:

  1. 在我尝试附加的 canlogserver 守护进程中添加 HTTP 到套接字转换。如何? (它是开源C,所以我可以添加它)
  2. 编写一个 PHP 接口,通过 telnet 连接到守护进程,并可以通过 HTTP 将数据返回到 Web 视图。对于多次通过 IP 堆栈的行程来说,这似乎效率极低。
  3. JS 客户端代码上还有什么可以绕过我的缓冲区问题并从 telnet 服务器读取消息、显示数据然后转储缓冲区吗?我需要确保我得到all一旦套接字打开,消息就会丢失,因此打开、关闭、重新打开将不起作用,因为这意味着消息会丢失。

Thanks,

Tim


实际上,WebSocket 具有类似 HTTP 的握手,然后为每条消息提供一些帧(握手后它们不是原始套接字)。

但是,您可以使用网络套接字 https://github.com/kanaka/websockify在 WebSocket 客户端(浏览器)和普通 TCP 套接字之间建立桥梁。即使 WebSocket 协议(例如 Hixie)或浏览器不直接支持二进制类型(例如类型化数组),Websockify 还允许您向 TCP 服务器发送/接收二进制数据。

noVNC https://github.com/kanaka/noVNC使用 websockify 能够直接连接到尚未内置 WebSocket 支持的 VNC 服务器。 Websockify 甚至包含一个小测试,演示如何将一个简单的基于浏览器的终端模拟器连接到 telnetd 服务器。免责声明:我做了websockify和noVNC。

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

在 Web 视图上显示来自 telnet 接口的高速数据的最佳方式? 的相关文章

  • NodeJs/WS:如何抛出服务器端在客户端处理的错误?

    当我的 websocket 有超过 2 个连接时 我试图在服务器端抛出错误 我有这个不错的客户端onerror方法 但我无法到达我的代码的那部分 我正在使用 nodeJS 和包ws其中有关于错误处理的最小文档 服务器 js theWebSo
  • http://localhost:8080 未重定向到 opensso 登录页面

    我的 Liferay Tomcat 服务器在端口 8080 上运行 当我尝试通过输入 url 从服务器访问应用程序时http localhost 8080 它没有重定向到登录页面 而是给我错误 The Connection to abc x
  • 哪些具体用例需要通过 WebSockets 和长轮询使用 BOSH? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Shared Web Workers 是否会在单页重新加载、链接导航中持续存在

    共享网络工作者 http www whatwg org specs web apps current work shared workers introduction旨在允许来自同一站点 来源 的多个页面共享单个 Web Worker 但是
  • Node.js - 使用 XHR 进行强大的上传

    我尝试实现一个简单的 XHR 上传到 Node js 通过强大 https github com felixge node formidable 问题是如果我设置 xhr setRequestHeader Content Type mult
  • 开放式 WebSocket 连接存在哪些安全问题?

    我正在构建一个使用 websockets 的应用程序 我只允许经过身份验证的用户在登录并被授予会话 ID 后打开与服务器的 Websocket 连接 一旦我与经过身份验证的用户打开了 Websocket 连接 当前 页面 就会保存打开的 W
  • Mosquitto Broker 服务拒绝在 Websocket 上启动

    我正在尝试启动 Eclipse Mosquitto 代理服务来监听 websockets 添加 listener 8083 protocol websockets 在 mosquitto conf 如果我只使用listener 8083 服
  • 如何解决作者签名问题?

    我在 tizen 电视商店上有一个应用程序 当我尝试更新版本时 出现以下错误 您要注册的应用程序的作者签名设置不正确 请尝试检查您的author signature xml 文件 请帮我解决这个问题 让我们一步步检查 您上传的包是使用 右键
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • 防止 NGINX 中的一个 WebSocket 连接泛滥?

    我使用这个配置来防止我的服务器上出现类似 DOS 的洪水 limit req zone binary remote addr zone one 10m rate 10r s limit req zone binary remote addr
  • 仅当 url 以 www 为前缀时才会发生 CORS 错误

    我目前遇到一个关于 CORS 跨源资源共享 的问题 奇怪的是 只有当我使用 www url 前缀时 才会出现这种情况 例如 当我使用以下网址访问我的网站时 http example com index http example com in
  • 代理阻止网络套接字?如何绕行

    我有一个用 Python 编写的正在运行的 websocket 服务器 来自https github com opiate SimpleWebSocketServer https github com opiate SimpleWebSoc
  • 对于跨域 XHR 丢弃 cookie 不是更简单吗?

    在进行网络开发时 我一直在与奇怪的限制作斗争 其中之一是 AJAX 请求的同源限制 我问自己 在创建请求时丢弃 cookie 而不是阻止对跨域资源的请求是否会更简单 以避免滥用 AJAX 请求的身份验证凭据 浏览器会话 Cookie 是一种
  • 如何修复套接字 io 中的 400 错误错误请求?

    我有一个前端应用程序 VUE JS 我有一个后端 Nest JS Vue JS 应用程序使用 vue socket io extended 库通过 websockets 从后端获取数据 当 Vue JS 应用程序启动时 我在浏览器中看到错误
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • WebSocket如何压缩消息?

    JSON stringify 显然空间利用率不高 例如 123456789 123456789 占用 20 多个字节 而它可能只需要大约 5 个字节 websocket 在发送到流之前是否会压缩其 JSON WebSocket 的核心只是一
  • 编辑和重播 XHR chrome/firefox 等?

    我一直在寻找一种方法来改变XHR request在我的浏览器中制作 然后再次重播 说我有完整的POST请求在我的浏览器中完成 我唯一想要更改的是一个小值 然后再次播放 直接在浏览器中执行此操作会更容易 更快捷 我用谷歌搜索了一下 但没有找到
  • jQuery AJAX 请求在 IE8 中失败,并显示消息“错误:调用 open 方法之前无法调用此方法。”

    我正在使用 jQuery 1 4 2 并尝试执行一个简单的 AJAX 请求 目标 URL 返回一个 JSON 字符串 我使用 jslint 对其进行了验证 该请求在 Firefox 和 Chrome 中有效 但不想在 IE8 中工作 我无法
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且

随机推荐