【发布时间】:2017-08-27 18:02:18
【问题描述】:
我正在使用 Nativescript/Angular 2 构建一个应用程序,并且我还使用 javascript library 来使用 websockets 将其与 Actioncable Rails 应用程序连接起来。 尝试建立连接时,我在 Nativescript 日志控制台上收到 websocket 错误代码 1006,并且连接被关闭。
我注意到初始 HTTP(握手)请求在标头(actioncable-v1-json,actioncable-unsupported)上发送了两个 Sec-WebSocket-Protocol 值,但响应中的标头只有一个 Sec-值缺少“actioncable-v1-json”和“actioncable-unsupported”的 WebSocket-Protocol。
我认为发生此错误是因为响应中缺少协议。 有谁知道如何将此标头(不支持 actioncable)添加到握手响应中?或任何其他导致此错误的想法?
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
谢谢
【问题讨论】:
-
运气好不好?
-
不,我最终切换到了 Socket-io。现在它可以正常工作了。
-
socket-io 客户端与服务器上的 Actioncable ?
-
由于我忘记启动 redis 服务器,我遇到了同样的错误。 Action Cable 在生产环境中默认使用 redis。检查 config/cable.yml。
标签: ruby-on-rails websocket nativescript error-code actioncable