尝试连接到Actioncable服务器时获取websocket错误代码1006

时间:2017-04-03 00:34:32

标签: ruby-on-rails websocket nativescript error-code actioncable

我正在使用Nativescript / Angular 2构建应用程序,我还使用javascript library来使用websockets将其连接到Actioncable Rails应用程序。 尝试建立连接时,我在Nativescript日志控制台上获得了websocket错误代码1006,并且连接已关闭。

我注意到初始HTTP(握手)请求在标头上发送了两个Sec-WebSocket-Protocol值(actioncable-v1-json,actioncable-unsupported),但响应中的标头只有一个值为Sec- WebSocket-Protocol缺少“actioncable-v1-json”和“actioncable-unsupported”。

我认为发生此错误是因为响应中缺少协议。 有谁知道如何将此标题(actioncable-unsupported)添加到握手响应中?或者导致此错误的其他任何想法?

rails日志中没有错误,它只是连接然后断开连接:

Started GET "/v1/cable/" [WebSocket] for 192.168.1.8 at 2017-04-02 17:04:06 -0700
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: upgrade, HTTP_UPGRADE: websocket)
Finished "/v1/cable/" [WebSocket] for 192.168.1.8 at 2017-04-02 17:04:06 -0700

Nativescript控制台上显示的错误消息是:

CONSOLE LOG file:///app/tns_modules/nativescript-actioncable/lib/action_cable.js:46:33: [ActionCable] Opening WebSocket, current state is null, subprotocols: actioncable-v1-json,actioncable-unsupported 1491179483038
CONSOLE LOG file:///app/tns_modules/nativescript-actioncable/lib/action_cable.js:46:33: [ActionCable] ConnectionMonitor started. pollInterval = 3000 ms 1491179483042
CONSOLE LOG file:///app/tns_modules/nativescript-actioncable/lib/action_cable.js:46:33: [ActionCable] Socket was closed because:    code:  1006 1491179483109

谢谢

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,问题是cable.yml配置。

我们注意到登台环境的url具有以下值:

url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>

删除该值以及实际上其他值会为我们修复该值。

新的cable.yml分段配置:

staging:
  adapter: redis

工作!