【问题标题】:Method broadcast_message in a rails app with websocket_rails gem don't work带有 websocket_rails gem 的 rails 应用程序中的方法 broadcast_message 不起作用
【发布时间】: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 的最后一次提交是一年前...我会查看 FayeThe Plezi Framework 除非我已经有需要的 Rails 应用程序具有该功能的补丁。
  • 是的,我会尝试其他选项,例如 FayeThe Plezi Framework。非常感谢!

标签: ruby-on-rails ruby ruby-on-rails-4 websocket


【解决方案1】:

发布此答案是为了反映 cmets 中提出的解决方案,并正确地将问题标记为不需要未来关注的问题。

正如here 指出的那样,websocket-rails 不是一个活跃的项目,它的最后一次提交是很久以前的事了。

提供了FayePlezi 等替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多