javascript - 如何使用 WebSocket 向 Socket.io 服务器发送消息

标签 javascript websocket socket.io react-native

我正在开发一个 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/

相关文章:

javascript - 使用 JSON 键和值动态创建表

ios - Websockets 在 iOS 和 Safari 上不起作用 - OSSStatus 错误 9837

java - 我的 Websocket 需要很长时间才能连接

ajax - 何时使用 socket.io 何时使用 ajax

javascript - 找不到模块 'socket.io'

node.js - SocketIO 在自签名证书上抛出 net::ERR_CERT_AUTHORITY_INVALID

javascript - 加载图像到 document.body 背景

javascript - 当我在 jQuery 中翻页时如何防止文本模糊

Javascript - 用换行符(而不是逗号)分隔数组值?

c++ - 如何从(binary == true)boost::beast::websocket::stream <tcp::socket>将 'read'放入缓冲区(boost::beast::flat_buffer?),以便它不被转义?