使用websocket_rails gem的rails应用程序中的方法broadcast_message不起作用

时间:2015-06-29 18:23:20

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

好吧,我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

发布此答案是为了反映评论中提出的决议,以便将问题正确地标记为不需要将来关注的问题。

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

提供了FayePlezi等替代方案。