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

Vin*_*oro 5 ruby-on-rails error-code websocket nativescript actioncable

我正在使用Nativescript/Angular 2构建一个应用程序,我也使用javascript 来使用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

谢谢

sty*_*972 0

我遇到了这个问题,问题出在 Cable.yml 配置上。

我们注意到暂存环境的 url 值如下:

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

删除该值和其他值实际上为我们修复了它。

新的 Cable.yml 暂存配置:

staging:
  adapter: redis
Run Code Online (Sandbox Code Playgroud)

在职的!