带有 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

Instagram gem:获取带有特定主题标签的照片

ruby 使用带有Mechanize的Pismo gem从网页中提取内容。来自http://stackoverflow.com/questions/14283974/what-ruby-gem-pro

带有docker的Gitlab runner不会在本地缓存rails gem

无法加载带有本机扩展的 gem:fresh 10.8、xcode 4.5、rvm

使用带有 Rails 的改革 gem,我如何填充 has_many :通过嵌套模型