带有 websocket_rails gem 的 rails 应用程序中的方法 broadcast_message 不起作用
Posted
技术标签:
【中文标题】带有 websocket_rails gem 的 rails 应用程序中的方法 broadcast_message 不起作用【英文标题】:Method broadcast_message in a rails app with websocket_rails gem don't work 【发布时间】:2015-06-29 18:23:20 【问题描述】:好吧,我正在尝试使用 rails 和 websocket 创建一个聊天应用程序,但效果不佳。
这是我的 events.rb:
WebsocketRails::EventMap.describe do
namespace :chat do
subscribe :new_message, :to => ChatController, :with_method => :incoming_message
end
end
这是我的 JS:
$(document).ready(function()
var dispatcher = new WebSocketRails(window.location.host + "/websocket");
dispatcher.bind('chat.new_message', bind_new_message);
$('#send_message').on('click', function(event)
var message =
text: $('#new_message').val()
dispatcher.trigger('chat.new_message', message);
);
);
function bind_new_message(message)
$('#chat_history').append('<div class="message"><span class="user">' + message.user + ':</span> ' + message.text + '</div>');
这是我的 chatcontroller.rb:
class ChatController < WebsocketRails::BaseController
def incoming_message
logger.info "====>>>> Llega al Controlador --->>> #message.inspect"
new_comment = :user => current_user.screen_name, :text => message[:text]
broadcast_message :new_message, new_comment, namespace: 'chat'
# send_message :new_message, new_comment, namespace: 'chat'
end
end
问题是这不起作用,例如,在websocket gem doc 中,当向所有客户端广播事件时,您可以使用方法broadcast_message
但不起作用,但是,如果我将此方法更改为send_message
有效(但只向触发事件的用户广播)
这是我的test app
【问题讨论】:
我忍不住注意到websocket-rails
的最后一次提交是一年前...我会查看 Faye 或 The Plezi Framework 除非我已经有需要的 Rails 应用程序具有该功能的补丁。
是的,我会尝试其他选项,例如 Faye 或 The Plezi Framework。非常感谢!
【参考方案1】:
发布此答案是为了反映 cmets 中提出的解决方案,并正确地将问题标记为不需要未来关注的问题。
正如here 指出的那样,websocket-rails
不是一个活跃的项目,它的最后一次提交是很久以前的事了。
提供了Faye 和Plezi 等替代方案。
【讨论】:
以上是关于带有 websocket_rails gem 的 rails 应用程序中的方法 broadcast_message 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
带有 Docker 的 Rails '在任何资源中都找不到 ...' 用于现有的 gem
ruby 使用带有Mechanize的Pismo gem从网页中提取内容。来自http://stackoverflow.com/questions/14283974/what-ruby-gem-pro
带有docker的Gitlab runner不会在本地缓存rails gem