如何配置actioncable与外部前端应用程序一起工作

b09cbbtk  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(209)

我有两个应用程序(一个rails应用程序和一个vue应用程序)需要通过actioncable进行通信。这在开发中非常有效,但是在生产中却不起作用。这两个应用程序都部署在heroku上,rails应用程序使用 RedisCloud 插件。
rails应用程序


## production.rb

config.action_cable.allowed_request_origins = ['https://actioncablevueapp.herokuapp.com']

## cable.yml

development:
  adapter: redis
  url: redis://localhost:6379/1
  channel_prefix: web_chat

test:
  adapter: test

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

## chat_channel.rb

class ChatChannel < ApplicationCable::Channel
  def subscribed
    customer = Customer.find_by(external_id: params[:id])
    stream_for customer
  end
end

## sidekiq process

ChatChannel.broadcast_to(Customer.find_by(external_id: user_id), body)

vue应用程序
在前端应用程序中,我使用了一个名为actioncable vue的库。这就是它的设置方式

// main.js

Vue.use(ActionCableVue, {
  debug: true,
  debugLevel: 'error',
  connectionUrl: `wss://${process.env.VUE_APP_SERVER_URL.replace('https://', '')}/cable`,
  connectImmediately: true,
  store
})
// App.vue

export default {
  name: 'App',
  channels: {
    ChatChannel: {
      received(data) {
        console.log(data)
      }
    }
  },
  mounted() {
    this.$cable.subscribe({
      channel: 'ChatChannel',
      id: 'anexistingcustomerid'
    })
  }
  ...
}

控制台和我从heroku获得的日志中都没有显示错误。实际上,在heroku上,我确实看到了一条确认订阅的actioncable日志消息。但是,我的vue应用程序无法通过电缆接收任何数据。
你能想到我可能错过的其他配置吗?事实上,这在开发和生产中都很好地工作,不会产生任何错误,这让我有点恼火。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题