0

我正在处理一个小的 WebSocket 聊天演示(基于此代码)。但是,似乎不起作用的部分是当客户端和服务器之间的连接关闭时,我想通知所有订阅者用户已“离开聊天室”。我认为当客户端连接断开时服务器会被通知/运行 onclose 函数,但也许这不是 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
4

1 回答 1

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

这样,消息将发送给所有订阅者。

此致

托拜厄斯

于 2011-11-07T08:32:35.410 回答