xmlhttprequest - 在 Web View 上显示来自 telnet 接口(interface)的高速数据的最佳方式?

标签 xmlhttprequest websocket can-bus tizen

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

以下是我尝试过但未能做到的:

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

所以我的问题是,我如何才能最好地完成这项工作?我看到了一些选项,但我确信还有更多选项:

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

谢谢,

蒂姆

最佳答案

实际上,WebSockets 有一个类似 HTTP 的握手,然后为每条消息都有一些框架(握手后它们不是原始套接字)。

但是,您可以使用 websockify在 WebSocket 客户端(浏览器)和普通 TCP 套接字之间架起桥梁。即使 WebSocket 协议(protocol)(例如 Hixie)或浏览器不直接支持二进制类型(例如类型化数组),Websockify 也使您能够向 TCP 服务器发送/接收二进制数据。

noVNC使用 websockify 能够直接连接到还没有内置 WebSocket 支持的 VNC 服务器。 Websockify 甚至包含一个小测试,演示将一个简单的基于浏览器的终端仿真器连接到一个 telnetd 服务器。 免责声明:我制作了 websockify 和 noVNC。

关于xmlhttprequest - 在 Web View 上显示来自 telnet 接口(interface)的高速数据的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016704/

相关文章:

c# .Net 4.5 线程间通信

can-bus - J1939 与 CAN 总线

ajax - 如何克服 XHR FF POST 大小限制?

python - jquery.get 不在 Firefox 上执行 xhr 请求

javascript - chrome 获取 Http Response 的问题

reactjs - Electron、React 和 WebSockets 导致 WebSocket.Server 不是构造函数

javascript - 单页 Web 应用程序应该保持一个到服务器的 Web Socket 连接还是多个?

javascript - 在回合制游戏中使用 socket.io 和 Nodejs 传递回合

mobile - 根据 SAE J1939 标准进行编程

javascript - 在第一个请求失败后,如何设法发出不同的请求