我正在试验Ratchet php 库。特别是,我一直在尝试将他们的推送集成演示集成到 React 应用程序中。
他们的演示引用了一个看似一次性的高速公路 JS 库版本,它与我的服务器实现(几乎是他们的演示的副本)相悖。
但是,当我尝试从 npm 使用高速公路 JS 时,一切都崩溃了。似乎这实现了更新版本的 Web Sockets 协议?
一次性版本的高速公路通行证wamp
用于Sec-WebSocket-Protocol
标头,Ratchet 似乎支持。高速公路的 npm 版本通过wamp.2.json, wamp.2.msgpack
...
挖掘棘轮代码我发现了这个
如果堆栈中的任何组件支持 WebSocket 子协议,则返回每个支持的数组
所以我Ratchet\WebSocket\WsServerInterface
在我的组件上实现了
public function getSubProtocols()
{
return ['wamp.2.json', 'wamp.2.msgpack'];
}
现在连接尝试更进一步,但仍然爆炸
由于违反协议而导致传输失败:意外消息类型 0
然后客户端关闭连接失败
未捕获的 DOMException:无法在“WebSocket”上执行“关闭”:代码必须是 1000,或者介于 3000 和 4999 之间。1002 两者都不是。
这里发生了什么; Ratchet 是否支持旧版本的 Web Socket 协议,或者有没有办法让这两个库成功通信?