因此,我尝试使用 Socket 通过端口 9999
向插入我的计算机、IP 地址为 xxx.xxx.1.32
的设备发送 TCP 消息.io。客户端成功连接到设备上运行的 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:
字段设置为保持事件状态),但它似乎从未发送消息,即使在第一次发送消息之后也是如此连接。关于出了什么问题有什么想法吗?
最佳答案
Socket.IO 不执行普通 TCP 套接字,因为这在浏览器中是不可能执行的。相反,它使用 WebSocket,需要在 HTTP 之上构建握手(或者其他一些基于 HTTP 的回退)。如果您想使用 Socket.IO 与您的自定义设备通信,您必须手动实现整个协议(protocol)。
如果你不能或不想在你的设备上运行node.js,最好忘记Socket.IO,只使用普通的WebSockets。或者甚至在一台成熟的计算机上实现一个代理服务器,可以通过普通 TCP 代理事物。
关于javascript - 使用 Socket.io 发送 TCP 消息时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27096910/