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