ソーシャルゲームの部屋割りプログラムはどう書けばいいかな
■ このスレッドは過去ログ倉庫に格納されています
とりあえずWebSocketでJSONのやり取りをするとして 参加のキャンセルが出来るようにしたい
部屋割り完了と同時にキャンセルされたらどうしよ WebSocket接続を担当するクラスを仮にWsとして
接続してきた人たちのWsインスタンスをキューに入れる 部屋割りが完了するまで以下をasynchronousに行う
キャンセルを意味するJSONオブジェクトが送られてきたら受領のJSONを返し接続を切る
何も送られてこなくても接続が切れたらキャンセルと見なす asynchronousにpop可能なキューが必要だな…
pipeとかchannelに近い物を用意する事にしよう
Wsインスタンスをキューに格納するのではなくchannelに送る事にする
そんで非同期にchannelのレシーバからインスタンスを受け取って、1グループ分集まったらその時点で生きている接続をチェック
死んでるWsをドロップして、また1グループ分集まるのを待つ
集まったら全員にキャンセルを無効にする旨のJSONを送る
数秒待機ののち、返答がないプレイヤーについては接続を切断、ドロップ
待機中に切断されたプレイヤーもドロップ
返答があったプレイヤーにはキャンセルの再有効化を通知し、再びchannelに送る
キャンセルの無効化通知に対して全員から返答があった場合、以降のキャンセルリクエストを無視する事にして部屋割り完了 ■ このスレッドは過去ログ倉庫に格納されています