【发布时间】:2019-07-27 11:38:56
【问题描述】:
问题
在开发过程中,我的 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 中使用了一些拆分前端来监听 websocket。 您应该知道整个配置在几天前就可以正常工作。
当我尝试从前端监听套接字时,它会这样做
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
我注意到根本没有运行任何进程,我不知道如何解决此问题。由于 websocket 服务器似乎是 ActionCable 的实习生,我真的不知道如何搜索崩溃,没有显示错误,puma 已启动并运行,但 websockets 没有。
我尝试了什么
我不记得过去几天我做了什么可能会破坏 Websockets,所以我尝试了很多方法
- 我尝试了很多很多方式来更改配置,但我在此处粘贴了原始配置。基本上多次运行整个文档并尝试了我能想到的所有组合
- 我已尝试更改端口或端点
- 我更改了自托管(且有效)的 SSL 证书并生成了新证书,但似乎与问题无关
- 我曾尝试将 Puma 降级,但没有任何改变。
- 我已尝试在新目录中完全重新安装该项目,但仍然无法正常工作。
- 我还通过 RVM 重新安装了多次 Ruby,并尝试了几个版本,但均未成功。
- 我什至绝望地把我的电脑升级到了 MacOS Mojave,一点问题也没有解决。
我不知道的事
我对通过 ActionCable 生成 Websocket 的机制一无所知。为什么没有任何错误?它是如何工作的 ?我是否错过了配置中的某些内容?它是否与 NPM / Node / Apollo 之类的其他任何东西交互,这可能在我的计算机上发生了变化?我使用多种技术从事多个项目,很难找到确切的起源......
如果您需要更多信息,请告诉我。感谢您的宝贵时间。
【问题讨论】:
-
每个进程的日志说明了什么? puma 和 actioncable 都有吗?
-
没有,它启动然后没有收到来自
4001的任何东西,因为没有进程在这个端口上运行。我试图打开一个rails/rails问题,但他们关闭了它,因为它似乎太特定于上下文。 -
../config/cable_environment中有什么内容?如果您可以将 repo 推送到 github 或其他看起来非常具体的东西,它也可能会有所帮助。 -
它与工作相关,所以我不能公开推送回购......该进程根本没有产生(没有错误,什么都没有)
-
@ZedTuX 我给你加的,我完全忘记了对不起
标签: ruby-on-rails ruby websocket puma actioncable