我想在 Web 视图上显示来自 telnet 界面的数据。我有一个守护进程正在运行,它读取 CAN 总线数据并在 telnet 端口上每秒生成约 500 行约 40 个字符。这是一些以 100 Hz 运行的消息,而大多数其他消息以 10 或 5 Hz 运行,因此总而言之约为 500 条/秒。我想获取每个数据包中的最新值并将其显示在网页上。网页在本地加载(不是通过 HTTP),并且守护程序可能位于不同的主机上,因此存在跨域通信。
这是我尝试过但没有做的事情:
- 使用 XMLHttpRequest。我可以打开连接并读取数据,但是当我收到 onprogress 事件时,我无法清除先前值的 responseText 字段。我无法解析 responseText 的最新值,因为它增长得非常快。我也会遇到内存问题,所以这是不行的。
- WebSockets 和 Socket.IO:两者都没有成功连接到 telnet 接口,因为它首先期望 HTTP 然后转换为直接套接字。
所以我的问题是,我怎样才能最好地做到这一点?我看到了一些选项,但我确信还有更多:
- 在我尝试附加的 canlogserver 守护程序中添加 HTTP 到套接字转换。如何?(它是开源 C,所以我可以添加它)
- 编写一个 PHP 接口,该接口通过 telnet 连接到守护进程,并可以通过 HTTP 将数据泵回 Web 视图。多次访问 IP 堆栈时,这似乎效率极低。<
- JS 客户端代码上还有什么其他内容可以规避我的缓冲区问题并从 telnet 服务器读取消息、显示数据然后转储缓冲区吗?我需要确保在打开套接字后收到所有消息,因此打开、关闭、重新打开将不起作用,因为这意味着消息会丢失。
谢谢,
蒂姆