如何使用socket.io-client连接到标准websocket?

尝试使用socket.io-

client连接到用Go编写的websocket服务器。我已经使用节点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并将其添加到选项中,离开transports选项(根据文档,意思是“全部”)并使用http

url。是socket-io.client不是能够连接到一个“标准”的WebSocket的?

回答:

根据我们的聊天,看来您被这句话误导了:

socket.io客户端基本上是一个简单的HTTP

Socket接口实现。它看起来与WebSocket类似,但是当用户的浏览器不支持WebSocket时,它提供了附加功能并利用了其他传输方式。

这意味着从与Socket.io客户端/服务器交互的客户端/服务器代码的角度来看,它看起来类似于WebSocket。但是,网络流量看起来与简单的WebSocket截然不同-

连接后,除了在WebSocket之上构建的更强大的协议之外,还有初始握手。握手被描述在这里和消息协议这里(均是链接到Socket.IO协议规范)。

如果要编写WebSocket服务器,则最好只使用裸露的WebSocket接口,而不要使用Socket.io客户端,除非打算实现所有Socket.io协议。

以上是 如何使用socket.io-client连接到标准websocket? 的全部内容, 来源链接: utcz.com/qa/435089.html

回到顶部