【问题标题】:How to access TCP Socket via web client如何通过 Web 客户端访问 TCP Socket
【发布时间】:2015-02-18 16:56:59
【问题描述】:

我在嵌入式设备中有一个程序,可以将 xml 字符串输出到套接字。嵌入式设备有 lighthttpd 有一个 web 服务器。我想使用基于 Web 的客户端(无 flash/silverlight)连接到套接字并每秒提取 xml 数据。

我查看了带有 Socket.io 的 Node.js 以获得我想要做的事情,但我不清楚如何继续。搜索 Node.js 和 Socket.io 文档和示例,我看到了标准的客户端-服务器行为,与我想要做什么无关。

基本上,Web 服务器只是在嵌入式应用程序正在向其输出数据的套接字上接受来自客户端的连接。基本上,Web 服务器的目的是让客户端从嵌入式应用程序正在写入的原始 tcp 套接字中检索数据。请指教。

【问题讨论】:

    标签: node.js socket.io tcp-ip


    【解决方案1】:

    Web 浏览器能够进行 HTTP 请求(可以是网页请求或 Ajax 数据请求)和 webSocket 连接。如果您坚持使用股票浏览器访问,则需要选择这两种机制之一。

    如果嵌入式设备中的 lighthttpd Web 服务器不支持 webSockets,那么您的选择就像是从浏览器到服务器的 Ajax 调用。这基本上只是一个 HTTP 请求,它返回不同于网页的内容(通常是 JSON 数据),旨在将数据从服务器获取到 Web 客户端。

    如果 lighthttpd 网络服务器确实支持 webSockets,那么您也可以使用 webSocket 连接来获取数据。这具有作为持久连接的优点,并允许服务器在需要时直接向客户端发送数据(客户端甚至无需请求更多数据)(对于持续更新更有效)。

    Ajax 连接通常不是持久的。客户端发送 Ajax 请求,服务器返回答案并关闭连接。下一个请求启动一个新的 Ajax 请求。

    Ajax 请求或 webSocket 连接都应该适合您的使用。所有仍在使用的浏览器都支持 Ajax。现代浏览器(IE10 及更高版本)支持 WebSocket。


    一旦您决定了客户端连接策略,您就会在嵌入式设备上构建您的网络应用程序,该设备充当浏览器和嵌入式设备上的数据之间的中间人。它将从嵌入式设备收集适当的数据,然后将其发送到连接并请求数据的浏览器客户端。


    我不确定您提到 node.js 的确切原因。在这种情况下,它将用作 Web 服务器和构建您的应用程序的环境以及从您的设备收集数据并将其提供给请求 Web 浏览器的逻辑,但听起来您已经为此目的拥有了 lighthttpd。就个人而言,如果 node.js 在您的环境中工作,我推荐它。结合 socket.io(用于 webSocket 支持),这是将浏览器直接连接到嵌入式设备的一种非常好的方式。我有一个用 node.js 编写并在 Raspberry Pi 上运行的阁楼风扇控制器。 node.js 应用程序监控温度探测器并控制切换阁楼风扇的继电器,并且 node.js 还用作我管理和监控 node.js 的 Web 服务器。总而言之,如果您已经了解并喜欢使用 Javascript 编程,那么这是一个非常漂亮的环境,并且有一组丰富的插件模块可以通过 NPM 扩展其可用功能。但是,如果您的嵌入式设备不是已经支持 node.js 的通用设备,或者它还没有 node.js,那么您将面临制作 node.js 的移植任务在它上面运行,这可能比使用其他已经在设备上运行的开发环境(如 lighthttpd)更有效。

    【讨论】:

    • 很抱歉没有让我的问题更清楚。我刚刚提到了 node.js 作为一个可能的例子。我需要做的是从 Web 浏览器连接到原始 tcp 套接字。我通过在 Web 服务器和 html 客户端之间使用桥接解决了这个问题。
    【解决方案2】:

    我使用Websockify 解决了这个问题,它充当 TCP 套接字和浏览器之间的桥梁。

    html客户端会连接到一个websocket,Websockify会监听websocket端口并在websocket和tcp socket之间传输数据。

    【讨论】:

    • 嗨,jabe,您有任何工作示例吗?我也想要相同的机制,但我不知道如何在节点 js 中使用 websockify
    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2012-11-13
    • 2011-12-24
    • 2017-09-27
    相关资源
    最近更新 更多