2011-11-03 56 views
0

我有一个小小的WebSocket聊天演示,我正在使用(based on this code)。但是,似乎没有工作的部分是当客户端和服务器之间的连接关闭时,我想通知所有订户该用户已“离开聊天室”。我认为服务器会在客户端连接断开时通知/运行onclose函数,但也许这不是WebSockets的工作方式。WebSockets:如何在客户端连接断开时通知所有订户?

这里是我的代码EventMachine的:

ws.onclose do 
    puts "Connection closed" 
    ws.send ({:type => 'status', :message => "#{@subscribers[subscriber_id]} has left the chatroom"}.to_json) 
    @main_channel.unsubscribe(subscriber_id) 
    end 

回答

1

您正在尝试将数据发送到刚刚关闭的WebSocket的,这是行不通的。你可能想只是把一个消息队列,如:

ws.onclose do 
    puts "Connection closed" 
    msg = {:type => 'status', :message => "#{@subscribers[subscriber_id]} has left the chatroom"}.to_json 
    @main_channel.push(msg) 
    @main_channel.unsubscribe(subscriber_id) 
end 

这样的消息将被发送给所有用户。

问候

托比亚斯

相关问题