【问题标题】:Best way to display high-speed data from a telnet interface on a web view?在 Web 视图上显示来自 Telnet 界面的高速数据的最佳方式?
【发布时间】:2012-04-04 17:59:46
【问题描述】:

我想在 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 服务器读取消息、显示数据然后转储缓冲区吗?我需要确保在打开套接字后获得所有消息,因此打开、关闭、重新打开将不起作用,因为这意味着消息会丢失。

谢谢,

提姆

【问题讨论】:

    标签: xmlhttprequest websocket can-bus tizen


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果您想要没有任何插件的纯 HTML5,最好的解决方案是使用 WebSockets。 请记住此类技术支持的浏览器,您可以在此处找到list of supported browsers 和协议版本。

      WebSockets 必须在建立连接时进行握手,通常是 http 行。 之后,所有消息都应该有框架,何时接收和何时发送。浏览器会自动执行此操作,但您必须为您的守护进程实现此功能。

      有现成的解决方案,取决于您使用的语言。

      如果您希望自己实现 WebSockets 协议,请查看 Java 实现的来源,并使用官方规范:RFC6455

      我相信 WebSockets 是最好的方法。 Java / Silverlight / Flash 可能是其他解决方案,但它需要更多的努力,并且可能不像 WebSockets 实现那样容易扩展,这将只是处理消息并在另一个 DIV 容器中创建像 DIV 一样的 DOM 元素,并接收到消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-28
        • 2015-03-15
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 2012-11-17
        相关资源
        最近更新 更多