我正在试验Ratchet php library。特别是,我一直在尝试将他们的push integration演示集成到React应用程序中。
他们的演示引用a seemingly one-off version of the autobahn JS library,它对我的服务器实现起作用(几乎与他们的演示重复)。
然而,当我尝试使用autobahn JS from npm时,一切都会融化。这似乎实现了更新版本的Web套接字协议?
高速公路的一次性版本通过wamp
Sec-WebSocket-Protocol
标题,Ratchet似乎支持。 npm版本的高速公路通过wamp.2.json, wamp.2.msgpack
...
通过棘轮代码我找到this
如果堆栈中的任何组件支持WebSocket子协议返回 每个都支持在一个数组
所以我在我的组件上实现了Ratchet\WebSocket\WsServerInterface
public function getSubProtocols()
{
return ['wamp.2.json', 'wamp.2.msgpack'];
}
现在连接尝试进一步发展,但仍然爆炸
由于协议违规而导致传输失败:意外消息类型0
然后客户端无法关闭连接
未捕获的DOMException:无法执行'关闭'在' WebSocket':The 代码必须是1000,或者介于3000和4999. 1002都不是。
这里发生了什么; Ratchet是否支持较旧版本的Web Socket协议,或者有没有办法让这两个库成功通话?
答案 0 :(得分:1)
这两个库不兼容,符合this issue on GitHub。
Autobahn 0.9+实现了wampv2,我们必须使用 高速公路0.8,我也没有在npm找到它。而是找到wamp1, 但我还没有测试过它。