Получение кода ошибки веб-сокета 1006 при попытке подключения к серверу Actioncable

Я создаю приложение с использованием Nativescript/Angular 2, а также использую библиотеку javascript для использования веб-сокетов, соединяющих его с приложением Actioncable Rails. При попытке установить соединение я получаю код ошибки websocket 1006 на консоли журнала Nativescript, и соединение закрывается.

Я заметил, что первоначальный запрос HTTP (рукопожатие) отправляет два значения для Sec-WebSocket-Protocol в заголовке (actioncable-v1-json, actioncable-unsupported), но заголовки в ответе имеют только одно значение для Sec-WebSocket-Protocol отсутствует 'actioncable-v1-json' и 'actioncable-unsupported'.

Я считаю, что эта ошибка происходит из-за отсутствия протокола в ответе. Кто-нибудь знает, как добавить этот заголовок (actioncable-unsupported) в ответ на рукопожатие? Или какие-либо другие идеи о том, что вызывает эту ошибку?

В журнале рельсов нет ошибки, он просто подключается, а затем отключается:

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 ответов

У меня была эта проблема, и проблема заключалась в конфигурации cable.yml.

Мы заметили, что промежуточная среда имеет значение для URL:

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

Удаление этого значения и фактически других значений исправило его для нас.

Новый промежуточный конфигурационный файл cable.yml:

staging:
  adapter: redis

За работой!

Другие вопросы по тегам