gpt4 book ai didi

node.js - 我可以使用 socket.io-client 连接到标准的 websocket 吗?

转载 作者:IT老高 更新时间:2023-10-28 22:08:06 29 4
gpt4 key购买 nike

尝试使用 socket.io-client 连接到一个用 Go 编写的 websocket 服务器。我已经使用 Node WebSocket 库 ( npm ) 成功连接。所以工作的 Websocket 代码如下所示:

  goSocketPort = 6060
url = "ws://localhost:#{goSocketPort}/streamresults/"
ws = new WebSocket(url)

ws.on('open', ->
log "socket opened"
)

ws.on('message', (message) ->
console.log('received: %s', message)
#log "Socket message: #{JSON.stringify message}"
)

很简单,而且很有效——另一端的套接字以设定的频率发送消息。但我最初尝试使用 socket.io-client ( npm ) 却无法启动。它当然将 websocket 列为其首选传输方式,但该死的,如果我能让它连接:

socket = ioClient.connect("#{url}", {port: goSocketPort, transports: ['xhr-polling', 'websocket']}) 

socket.on("connect", (r) ->
log "connected to #{url}"
)

连接永远不会发生,因此不会触发任何 on 事件并且代码会立即退出。我已经尝试过:将端口从 url 中删除并将其添加到选项中,离开传输选项(根据文档,这意味着“全部”)并使用 http url。 socket-io.client 是否无法连接到“标准”websocket?

最佳答案

根据我们的聊天记录,您似乎被这句话误导了:

The socket.io client is basically a simple HTTP Socket interface implementation. It looks similar to WebSocket while providing additional features and leveraging other transports when WebSocket is not supported by the user's browser.

这意味着从与 Socket.io 客户端/服务器交互的客户端/服务器代码的角度来看,它看起来类似于 WebSocket。然而,网络流量看起来与简单的 WebSocket 非常不同——除了建立在 WebSocket 之上的更强大的协议(protocol)之外,还有一个初始握手,一旦连接完成。握手描述here和消息协议(protocol)here (两者都是 Socket.IO 协议(protocol)规范的链接)。

如果您正在编写 WebSocket 服务器,最好只使用裸 WebSocket 接口(interface)而不是 Socket.io 客户端,除非您打算实现所有 Socket.io 协议(protocol)。

关于node.js - 我可以使用 socket.io-client 连接到标准的 websocket 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232023/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com