適当な思いつきで書くブログ

UbuntuやPerlやJavaScriptやVimやZshやShellScriptやMySQLと戯れている中で適当な思いつきでやってみたことを書いています。

Net::MSNがしばらくするとオフラインになってしまうので定期的に"PNG"を投げる必要がありそうです

Net::MSNに関わらずMSN Messenger Service Protocolを使ったサービス全般に言えることなのではありますが。

どうも"CHL"コマンドが送られてこない?

Net::MSNを利用したアプリケーションを作ったのですが、一晩おくとアプリ自体は落ちていないにも関わらずクライアントがオフライン状態になってしまっていました。

仕様では、クライアントのオンライン状態のチェックのため、MSNサーバ側から定期的に"CHL"コマンドが送られてくるのでそれに対して"QRY"コマンドを返す必要があります(Net::MSNを使用していればその辺を考慮することは不要で"CHL"が送られてきたら勝手に"QRY"を返してくれます)。
ただ、前述の通りある一定時間おくとオフラインになってしまうので、そもそも"CHL"が送られて来ないのではと思われます。

ということで、こっちから定期的に"PNG"を投げればおk

本家のWindows Live メッセンジャーをネットワーク監視ツールでモニタリングしたところ、30秒に1回程度の頻度で"PNG"コマンドを投げていることが分かりました(監視ツールで"CHL"&"QRY"のやりとりは見つけられませんでした)。

"PNG"とは"CHL"の逆バージョンで、クライアントがMSNサーバに対して自分のオンライン状態を知らせるために投げるコマンドです。

"PNG"コマンドを本家と同じ程度の頻度で投げることでオフライン解消と相成りました。めでたしめでたし