2006-04-04 (Tuesday) [長年日記]
■ MSNP #2
MSN Messengerのプロトコルがやっとわかった.
現在の会話に参加しているユーザはSwitchboardに 接続しているすべてのユーザってことでいいみたいね.
VER,INF,USR,XFR,ANS(RNG),IRO,JOI,MSG,BYE,OUTだけ実装すれば、「メッセージを送られて、もしくは会話に招待されてからやりとりする」エージェントは作れる
らしい.
会話に参加しているユーザの流れ
ログインなどを済ませた後に, メッセージをこちらから送信する流れはこんな感じ.
- クライアントからXFRでSwitchboardを要求
- サーバはXFRでSwitchboardを返答
- クライアントからUSRで自分のIDを通知(サーバからUSRでOKの返答)
- --- Switchboardと接続完了 ---
- クライアントからCALで会話に招待(サーバからCALで呼び出し中を通知)
- サーバからJOIで会話に参加したユーザを通知(ユーザIDと表示名)
- MSGで会話 x N
- サーバからBYEで会話から抜けたユーザを通知
同様にメッセージを受信する場合はこんな感じ.
- サーバからRNGでサーバから招待のSwitchboardを通知
- クライアントからANSでSwitchboardに参加
- --- Switchboardと接続完了 ---
- サーバからIROでSwitchboardに参加しているユーザを通知(ユーザIDと表示名)
- MSGで会話 x N
- サーバからBYEで会話から抜けたユーザを通知
複数人で会話するときの流れがまだよくわかんない. いきなりJOIで接続してくんのかね.でも,解説によると,CALの応答とか書かれている...自分ではなく,他の人が誘った場合はどうなるんだろ. まぁ,実際やってみりゃわかるか.
こうして見ると比較的シンプルなプロトコルかも. しかし,これはTCPのコネクションを浪費しすぎだろう...
まぁ,この方が負荷の分散をしやすいか. それぞれの会話で別のサーバを使うこととかもできるかんなー.
[ツッコミを入れる]
[]
本日のPingbacks(全0件)








