MSN Messenger Protocol

何を思ったか。MSN Messengerのクライアントを作ろうと思いついた。


最初、MSDNでWindows Messengerという記事を見つけてサンプルコードを書いてみたんだけど、どうもメッセージの受け渡しについては、APIとして公開されているわけじゃないみたい。
そこで、もうちょっと下のレベルから書いてみようかなと。
別に、MSN Messengerのクローンが欲しいわけじゃなくて、留守番ロボットをメッセンジャーに繋ぎたいので、そのエンジンが欲しくなっただけです。
MSN Messenger Protocol

ここにさっくりとMSN Messengerのプロトコルについての解説があるので、これを読みながら実装中。
C#で書いてます。
いやぁ。.NETのライブラリ、よぉできてますわ。
TcpClientクラスのお世話になっております。
流れは以下の通り
messenger.hotmail.com にport 1863で接続
バージョンの確認、(VERとCVR)
ユーザー認証の問い合わせ、(USR)
あっちのサーバーに繋げとたらいまわしにあう、(XFR)
指定されたサーバーに指定されたポートで接続
バージョンの確認、(VERとCVR)
ユーザー認証の問い合わせ、(USR)
Challenge Stringがもらえる、(USR)
接続はそのままにしておいて。。
nexus.passport.comにport 443で接続。すなわちhttps
あっちのサーバーに繋げろとたらいまわしにあう。(PassportURLsヘッダ)
指定されたサーバーにport 443で接続
指定されたURLに、Challenge StringとパスポートのIDとパスワードで問い合わせ(Authorizationヘッダ)
成功すれば クライアントのticketがもらえる。(Authentication-Infoヘッダ)
先ほどの接続に、このticketでユーザー認証、(USR)
接続完了
httpsの接続で頭を抱え込んだけれど、.NETのライブラリで、HttpWebRequestクラスを使えば、httpsの接続が簡単にできることが発覚。
クライアントのticketがもらえることを確認したところで、力尽きる。
とりあえず、認証完了まではたどり着きたいぞ。。。
まぁとりあえず、TcpClientクラスで書いてるけど、ここを見ると、httpでも同じことができるみたいなので、途中で変えるかも。

コメントを残す