Получение кода ошибки websocket 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

Спасибо


person Vinicio Del Toro    schedule 03.04.2017    source источник
comment
Удачи в этом?   -  person Haris    schedule 11.05.2017
comment
Нет, я перешел на Socket-io. Теперь с ним нормально работает.   -  person Vinicio Del Toro    schedule 12.05.2017
comment
Клиент socket-io с Actioncable на сервере?   -  person Haris    schedule 12.05.2017
comment
У меня такая же ошибка, так как я забыл запустить сервер Redis. Action Cable по умолчанию использует redis в производственной среде. проверьте config / cable.yml.   -  person devneko    schedule 23.01.2019


Ответы (1)


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

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

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

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

Новая конфигурация установки cable.yml:

staging:
  adapter: redis

Работающий!

person tango whiskey double    schedule 15.02.2019