我在基于Web的套接字中有NodeJs Web服务。服务器端我的一个文件尝试将 xml 发送到局域网中的打印机,地址为 192.168.1.5,但此 IP 在我的物理网络中,而不是服务器端的区域网络中。当我在本地主机上打开 Web 服务时,它是有效的,但当我通过网络打开我的服务时,它不起作用。我如何使用 nodejs 应用程序将使用套接字客户端将 xml 发送到局域网中的另一个本地主机的 Web 套接字,就像我一样?
例如(我的局域网(:
本地主机 - 192.168.1.100
打印机 - 192.168.1.5
本地主机(我的物理计算机(->浏览器上打开Web服务(NodeJS( ->运行脚本(服务(->通过TCP将xml发送到打印机(192.168.1.5(
这种情况可能吗?
您不能直接使用 webSocket 或 socket.io 发送普通 TCP 数据包。 webocket是它自己的协议,socket.io 运行在webSocket之上。 它启动与 http 请求的连接,使用自己的数据格式帧和自己的安全方案。 因此,webSocket 客户端只能连接到 webSocket 服务器或 socket.io 客户端连接到 socket.io 服务器,而不能连接到普通 TCP 设备。
您可以使用 node.js 中的Net
模块进行普通的 TCP 连接。 因此,您可以直接从节点联系打印机.js如果可行的话。
但是,如果不使用某种可以访问本机代码的浏览器插件,或者不向服务器发送某种 http 或 webSocket 或 socket.io 请求并让服务器代表您联系打印机(这将要求服务器和打印机位于同一本地网络上(,则无法使普通 TCP 连接直接形成浏览器网页。