32nd Diary

過去の日記
today: , yesterday: , total:
2006年
4月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

めーるあどれす:ruby -r base64 -e 'puts Base64.decode64("dGFrQG5vMzIudGs=")'


トップ «前の日記(2006-04-03 (Monday)) 最新 次の日記(2006-04-05 (Wednesday))» 編集

2006-04-04 (Tuesday) [長年日記]

MSNP #2

MSN Messengerのプロトコルがやっとわかった.

現在の会話に参加しているユーザはSwitchboardに 接続しているすべてのユーザってことでいいみたいね.

MSNメッセンジャーのクライアント作った人いる? によると

VER,INF,USR,XFR,ANS(RNG),IRO,JOI,MSG,BYE,OUTだけ実装すれば、「メッセージを送られて、もしくは会話に招待されてからやりとりする」エージェントは作れる

らしい.

会話に参加しているユーザの流れ

ログインなどを済ませた後に, メッセージをこちらから送信する流れはこんな感じ.

  1. クライアントからXFRでSwitchboardを要求
  2. サーバはXFRでSwitchboardを返答
  3. クライアントからUSRで自分のIDを通知(サーバからUSRでOKの返答)
  4. --- Switchboardと接続完了 ---
  5. クライアントからCALで会話に招待(サーバからCALで呼び出し中を通知)
  6. サーバからJOIで会話に参加したユーザを通知(ユーザIDと表示名)
  7. MSGで会話 x N
  8. サーバからBYEで会話から抜けたユーザを通知

同様にメッセージを受信する場合はこんな感じ.

  1. サーバからRNGでサーバから招待のSwitchboardを通知
  2. クライアントからANSでSwitchboardに参加
  3. --- Switchboardと接続完了 ---
  4. サーバからIROでSwitchboardに参加しているユーザを通知(ユーザIDと表示名)
  5. MSGで会話 x N
  6. サーバからBYEで会話から抜けたユーザを通知

複数人で会話するときの流れがまだよくわかんない. いきなりJOIで接続してくんのかね.でも,解説によると,CALの応答とか書かれている...自分ではなく,他の人が誘った場合はどうなるんだろ. まぁ,実際やってみりゃわかるか.


こうして見ると比較的シンプルなプロトコルかも. しかし,これはTCPのコネクションを浪費しすぎだろう...

まぁ,この方が負荷の分散をしやすいか. それぞれの会話で別のサーバを使うこととかもできるかんなー.

Tags: Net Windows
[]
本日のPingbacks(全0件)