Orb*_*bit 5 sockets websocket node.js socket.io
我有一个Node.js服务器,利用流行的ws软件包来使用网络套接字.我想使用此库连接到运行socket.io的第三方服务器.
如果我在我的服务器上使用socket.io,连接代码将是这样的:
const socket = socketIo('https://api.example.com/1.0/scores')
Run Code Online (Sandbox Code Playgroud)
我试图使用ws包连接到同一服务,并修改网址:
const wsClient = new WebSocket('wss://api.example.com/1.0/scores');
Run Code Online (Sandbox Code Playgroud)
但这导致以下结果:
错误:意外的服务器响应:200
问题:
从运行ws包的服务器连接到运行socket.io的第三方服务器需要做什么?
附加信息:
/socket.io/?EIO=3&transport=websocket到网址的末尾.这不会抛出与上面(> Error: Unexpected server
response: 200)相同的错误,也不会抛出任何可见错误,但似乎不起作用(没有从远程服务器接收数据).使用new WebSocket('ws://api.example.com/1.0/scores?EIO=3&transport=websocket');(通过打开连接ws)在下面的堆栈跟踪结果:
{ Error: Parse Error
at Socket.socketOnData
at emitOne
at Socket.emit
// ...
}
Run Code Online (Sandbox Code Playgroud)因为 Socket.IO 不保证会有一个像您预期的那样托管的 WebSockets 服务器,所以您应该使用他们的标准客户端包。
npm i socket.io-client
Run Code Online (Sandbox Code Playgroud)
然后在代码中使用该包:
const ioClient = require('socket.io-client')('https://example.com/1.0/scores')
Run Code Online (Sandbox Code Playgroud)
socket.io-client 的完整文档可在其GitHub 存储库上找到。
注意:不过,老实说,如果可能的话,此时最好使用 WebSockets。WebSockets 已在浏览器中得到很好的支持并且相当标准。Socket.IO 很少需要,并且可能会增加一些开销。
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |