Получение кода ошибки веб-сокета 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
За работой!