我正在使用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
谢谢
答案 0 :(得分:0)
我遇到了这个问题,问题是cable.yml配置。
我们注意到登台环境的url具有以下值:
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
删除该值以及实际上其他值会为我们修复该值。
新的cable.yml分段配置:
staging:
adapter: redis
工作!