gpt4 book ai didi

ruby-on-rails - 广播消息发送后不会在浏览器控制台显示,actioncable和redis开发环境

转载 作者:可可西里 更新时间:2023-11-01 11:14:58 25 4
gpt4 key购买 nike

我已经为从 redis cli 运行服务器的 windows 安装了 redis

C:\program files\redis>redis-cli
127.0.0.1:6379>

开发cable.yml是

development:
adapter: redis
url: redis://127.0.0.1:6379/0

通知 channel rb

class NotificationsChannel < ApplicationCable::Channel
def subscribed
stream_from "notifications_#{current_user.id}"
end
end

启动rails server并加载页面,服务器打印

Started GET "/cable/" [WebSocket] for ::1 at 2018-09-29 13:07:17 +1000
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-alive, Upgrade, HTTP_UPGRADE: websocket)
Registered connection (Z2lkOi8vcGVvcGxlcy9Vc2VyLzUwMQ)
NotificationsChannel is transmitting the subscription confirmation
NotificationsChannel is streaming from notifications_501

页面上的notifications.js是

App.notifications = App.cable.subscriptions.create("NotificationsChannel", {
connected: function() {
alert("hello")
},
recieved: function(data) {
console.log(data)
}
});

弹出警告说页面加载时已连接。在另一个终端运行 rails console

irb> ActionCable.server.broadcast("notifications_501", body: "hello")

在 rails 服务器输出中回顾

NotificationsChannel transmitting {"body"=>"hello"} (via streamed from notifications_501)

但是控制台没有显示 JSON 对象?

** 编辑 **

创建另一个redis服务器实例

C:\program files\redis>redi-cli
127.0.0.1:6379>subscribe "notifications_501"
1)"subscribe"
2)"notifications_501"
3)(integer) 1

打开另一个cli

127.0.0.1:6379>publish "notifications_502" "{\"body\":\"hello\"}"

它传输到 rails 服务器和订阅的 redis 服务器

NotificationsChannel transmitting {"body"=>"hello"} (via streamed from notifications_501)

最佳答案

我认为它在您第一次尝试时不起作用的原因可能是因为在命名 received 函数时出现错字。你确实 received 而不是。

关于ruby-on-rails - 广播消息发送后不会在浏览器控制台显示,actioncable和redis开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52565007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com