【问题标题】:Trouble sending TCP message with Socket.io使用 Socket.io 发送 TCP 消息时遇到问题
【发布时间】:2014-11-24 02:13:12
【问题描述】:

所以我试图通过 Socket.io 端口9999 向插入我计算机的设备发送 TCP 消息,IP 地址为xxx.xxx.1.32。客户端成功连接到设备上运行的 TCP 服务器,但我似乎无法向它发送任何实际消息。这是我从设备获得的输出:

还有我的客户端代码:

<script src = "https://cdn.socket.io/socket.io-1.2.1.js"></script>
<script>
    var socket = io('http://xxx.xxx.1.32:9999');
    socket.on('connect', function() {
        socket.send('GPIO,00,0');
        socket.emit('GPIO,00,0');

        socket.on('message', function (msg) {
                alert(msg);
        });
    });
</script>

它会定期接收第一张图片中详述的相同消息(这是有道理的,因为Connection: 字段设置为保持活动状态),但它似乎从未发送过消息,即使在第一次建立连接之后也是如此。关于出了什么问题的任何想法?

【问题讨论】:

    标签: javascript sockets tcp socket.io


    【解决方案1】:

    Socket.IO 不使用普通的 TCP 套接字,因为这在浏览器中是不可能的。相反,它使用 WebSockets,这需要建立在 HTTP 之上的握手(或者其他一些基于 HTTP 的后备)。如果您想使用 Socket.IO 与您的自定义设备通信,您必须手动实现它们的整个协议。

    如果您不能或不想在您的设备上运行 node.js,最好忘记 Socket.IO,而只使用普通的 WebSockets。或者甚至在一台成熟的计算机上实现一个代理服务器,它可以通过普通的 TCP 代理事物。

    【讨论】:

    • 明白了,感谢您的回答。你认为这个插件可以做到这一点吗? github.com/kanaka/websockify
    • 看起来可以完成这项工作,假设你可以让它在你的平台上运行。
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2021-10-18
    • 2019-03-05
    相关资源
    最近更新 更多