我正在开发一个 React Native 应用程序,我想使用 WebSocket 类与我的 Socket.io 服务器通信。
我可以很好地连接到服务器,但是我在使用 .send()
方法向它发送消息时遇到问题。
我在 React Native 上试过这个:
var socket = new WebSocket("ws://host:port/socket.io/?transport=websocket");
socket.onopen = () => {
console.log("connected");
socket.send('data');
};
在我的 Socket.io 服务器上,我有一个我为测试而创建的监听器:
socket.on('data', function(data) {
console.log("data");
})
连接正常,我也能在服务器上看到它。但是当我执行 socket.send('data')
时,服务器会调用 disconnect
事件,而不是我在上面编写的 data
事件。 (我通过使用调用 .send()
方法的函数对此进行了测试,因此这确实会导致服务器断开连接)
谁能对此有所启发?
最佳答案
那是因为 Socket.io 与 WebSocket 不完全兼容 - 有初始握手、连接回退(例如,当没有可用的 WS 时,使用 AJAX 长池或其他技术)以及 Socket.io 对您隐藏的其他内容让您的生活更轻松。从本质上讲,Socket.io 应该被视为一个单独的协议(protocol)。
要连接到 Socket.io 服务器,您必须使用 Socket.io 客户端库。
关于javascript - 如何使用 WebSocket 向 Socket.io 服务器发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316315/