从 Websocket ActionCable + Postman 接收数据

Receive Data from Websocket ActionCable + Postman

提问人:Kingsley Simon 提问时间:10/9/2023 更新时间:10/9/2023 访问量:36

问:

我有以下代码在Rails API项目中使用ActionCable设置我的websocket实现

routes.rb (路由.rb)

mount ActionCable.server => '/cable'

应用.rb

config.action_cable.mount_path = nil

开发.rb

config.action_cable.url = "ws://localhost:3001/cable"
config.action_cable.disable_request_forgery_protection = true

频道/application_cable/channel.rb

module ApplicationCable
  class Channel < ActionCable::Channel::Base
  end
end

频道/jobs_channel.rb

class JobsChannel < ApplicationCable::Channel
  def subscribed
    stream_from "jobs_channel"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

使用 Redis。我有我cable.yml

development:
  adapter: redis
  url: "redis://localhost:6379/0"

test:
  adapter: test

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

因为我想同时运行我的 Rails 服务器和我的 Websocket 服务器,所以我设置了一个文件 cable/config.ru

require ::File.expand_path('../../config/environment',  __FILE__)
Rails.application.eager_load!

run ActionCable.server

现在我启动我的 rails 服务器,并将我的 websocket 服务器启动为 .我还确保我的redis服务器正在运行。rails sbundle exec puma -p 3001 cable/config.ru

在邮递员上,我像这样设置,它能够连接到 websocket 服务器enter image description here

为了能够将数据发送到websocket,我应该能够做这样的事情

serialized message = {"data": "Hello world"}
ActionCable.server.broadcast("jobs_channel", serialized_message)

但它似乎不起作用。我似乎无法通过 websocket 传递数据。我做错了什么?

如果有人能为我指出正确的方向,将不胜感激。

谢谢

Ruby-on-Rails Ruby WebSocket Postman Actioncable

评论

0赞 Chiperific 10/11/2023
您在什么环境/上下文中运行?您是否以某种方式让您的实例运行此代码?或者你是在里面做的?ActionCable.server.broadcast("jobs_channel", serialized_message)rails srails console
0赞 Kingsley Simon 10/11/2023
@Chiperific我是在 Rails 控制台上完成的。
0赞 Chiperific 10/11/2023
我不认为你可以从控制台做到这一点,我认为你需要你的正在运行的 rails 服务器来运行这段代码,以便它有一个 Web 服务器来实际广播。

答: 暂无答案