Websockets:Rachet& npm兼容的高速公路?

时间:2018-02-16 00:30:19

标签: websocket ratchet autobahnws

我正在试验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协议,或者有没有办法让这两个库成功通话?

1 个答案:

答案 0 :(得分:1)

这两个库不兼容,符合this issue on GitHub

  

Autobahn 0.9+实现了wampv2,我们必须使用   高速公路0.8,我也没有在npm找到它。而是找到wamp1,   但我还没有测试过它。