Проблема
В процессе разработки я разделяю процессы между моим сервером Rails и ActionCable.
➜ backend git:(dev) bundle exec puma cable/config.ru -p 1337
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 0, max threads: 16
* Environment: development
Моя конфигурация довольно классическая
# cable/config.ru
require_relative '../config/cable_environment'
Rails.application.eager_load!
run ActionCable.server
Ив моем development.rb
у меня есть те
# Set Action Cable server url for consumer connection
config.action_cable.url = 'wss://localhost:4001'
config.action_cable.allowed_request_origins = [
'https://localhost:4000',
]
Похоже, это работает.Параллельно с этим я использую какой-то разделенный интерфейс в VueJS для прослушивания веб-сокетов. Вы должны знать, что вся эта конфигурация работала раньше, чем несколько дней назад.
Когда я пытаюсь прослушать сокеты из внешнего интерфейса, он делает это
action_cable.js?f5ee:241 WebSocket connection to 'wss://localhost:4001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Что я знаю
SSL настроен правильно (как я уже говорил, он действительно работал раньше), и конфигурация кажется действительно хорошей.Я также не единственный, кто работает над этим проектом Rails, но единственный, кто сталкивается с этой проблемой.
Когда я пытаюсь проверить, используется ли порт, я делаю следующее
lsof -ti:4001
Я заметил, что ни один процесс не работает вообще , и я не знаю, как устранить эту проблему.Поскольку сервер веб-сокетов, кажется, является стажером в ActionCable, я действительно не знаю, как искать, что происходит сбой, ошибки не отображаются, пума запущена, но веб-сокеты нет.
Что я пробовал
Я не могу вспомнить точно, что я сделал за последние несколько дней, которые могли сломать веб-сокеты, поэтому я попробовал много вещей
- Я пытался изменить конфигурацию вмного, много способов, но я вставил оригинал здесь.В основном запускал всю документацию несколько раз и пробовал все комбинации, которые я мог придумать
- Я пытался изменить порт или конечную точку
- Я изменил сертификаты SSL, которые размещаются самостоятельно (иработает) и выпустил новые, похоже, это не связано с проблемой
- Я пытался понизить версию Puma, но это ничего не изменило.
- Я пыталсяпереустановите проект полностью в новом каталоге, но он все еще не работает.
- Я также несколько раз переустанавливал Ruby через RVM и пробовал несколько версий, но безуспешно.
- Я даже закончилдо обновления моего компьютера до MacOS Mojave в отчаянном движении, не сдвинул проблему с места.
Чего я не знаю
Я ничего не знаю омеханизм порождения веб-сокетов через ActionCable.Почему нет ошибки?Как это работает ?Я что-то упустил в своей конфигурации?Взаимодействует ли это с чем-то еще, например, с NPM / Node / Apollo, которые могли бы измениться на моем компьютере?Я работаю над несколькими проектами с несколькими технологиями, довольно сложно найти точное происхождение ...
Если вам нужна дополнительная информация, просто дайте мне знать.Спасибо за ваше время.