マルチユーザー アプリケーション
マルチユーザー アプリケーションには 2 つのクライアント間の同期が必要で、接続関連およびデータ関連のイベントに対応するイベント ハンドラを使用しなければなりません。
マルチユーザー用 Windows Live Messenger アプリの基礎を構成するプロセスは次のとおりです。
- 同期
- データの送受信
- エラー処理
同期
アプリを実行するための招待が送信され、承諾された後、双方の Messenger クライアントがアプリケーションをロードします。先にロードされたアプリケーションは、通信可能状態になったことを知らせる通知がもう一方のアプリケーションから送信されるまで、待機する必要があります。
次に示すのは、イベントの発生順の例です。
最初にロードされたアプリケーションは、Channel.Initialize を呼び出し、Channel.OnRemoteAppLoaded イベントが発生するのを待機します。2 番目にロードされたアプリケーションは、通信可能状態になったら Channel.Initialize を呼び出します。すると直ちにChannel.OnRemoteAppLoaded イベントが発生します。
リモート ユーザーがアプリケーションをロードできない場合、最初にロードされたアプリケーションでは Channel.OnRemoteAppLoaded イベントが発生しません。一定間隔でメッセージを表示するタイマーを設定すると、アプリケーションがフリーズしていると誤解されないようにすることができます。
コンピュータのインターネット セキュリティ レベルが "高" に設定されている場合、スクリプトは無効になり、Windows Live Messenger アプリは実行されません。
データの送受信
情報を送信する主な方法は、Channel.SendData メソッドを使用することです。アプリケーションには Channel.OnDataReceived の発生時に呼び出されるイベント ハンドラが必要です。このイベントは、アプリケーションがデータを受信したときに発生します。
インスタント メッセージの送信には、Channel.SendIM および Channel.SendIMAsUser メソッドを使用します。この場合、アプリケーションには Channel.OnIMReceived に対応するイベント ハンドラも必要になります。
ファイルの転送には、Channel.SendFile メソッドを使用します。この場合、アプリケーションには Channel.OnFileReceived というイベント ハンドラも必要になります。
インスタント メッセージやファイル転送の機能を使用するには特別な許可が必要です。許可の詳細については、「標準的なアプリケーションと高度なアプリケーション」を参照してください。
アプリケーションには Channel.OnRemoteAppClosed の発生時に呼び出されるイベント ハンドラが必要です。このイベントの発生後、接続は閉じられます。閉じられた接続に対していずれかのメソッドがデータを送信しようとすると、例外がスローされます。
エラー処理
アプリケーションには Channel.OnDataError に対応するイベント ハンドラが必要です。このイベントは、Channel.SendData が失敗した場合に発生します。Channel.OnDataError はいくつかのプロパティと関係します。これらを使用して、エラーの種類を表示したりデータのコピーを取得したりできます。通常、エラーの原因が通信遮断の問題である場合には、アプリケーションでデータ送信を再試行する必要があります。
アプリケーションには、エラー処理ブロック内にインスタント メッセージを送信するメソッドをラップするなどの、その他のエラー処理手法も実装する必要があります。これには、JavaScript の try-catch ブロックや、Microsoft Visual Basic Scripting Edition (VBScript) の ON ERROR GOTO ステートメントなどがあります。