0

私が取り組んでいるWebSocketチャットデモがあります(このコードに基づいています)。ただし、クライアントとサーバー間の接続が閉じられたときに機能していないように見える部分は、ユーザーが「チャットルームを離れた」ことをすべてのサブスクライバーに通知したいと思います。クライアント接続が切断されたときにサーバーに通知/onclose関数を実行すると思いましたが、WebSocketの動作とは異なる場合があります。

これが私の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 に答える