接続タイプAPCWebSocketまたはTCPソケットに関係なく、次のようにABAPでAPCクライアントアプリケーションを開発することができます。
- 次の接続固有のイベントハンドラインターフェイスのいずれかを実装します。
-
IF_APC_WSP_EVENT_HANDLER:サブプロトコルを指定しないTCPソケットおよびWebSocket接続用。
-
IF_APC_WSP_EVENT_HANDLER_PCP :ID V10.PCP.SAP.COMのサブプロトコルプッシュチャネルプロトコル(PCP)を使用するWebSocket接続用(定数IF_APC_WSP_EVENT_HANDLER_PCP => CO_EVENT_HANDLER_TYPEとして利用可能)。
-
- 次のクラスファクトリのいずれかを使用して、タイプIF_APC_WSP_CLIENTのAPCクライアントオブジェクトを作成します。サポートされている2つの接続タイプには、2つの異なるクライアントファクトリがあります。
-
CL_APC_WSP_CLIENT_MANAGER:WebSocketクライアント通信用
-
CL_APC_TCP_CLIENT_MANAGER:TCPソケットクライアント通信用
-
- ON_OPENやON_CLOSEなどの着信メッセージやイベントを処理するには、既存のABAPセッションがアイドル状態または待機状態である必要があります。この状態は、たとえば、このセッションの要求がない場合に暗黙的に開始することも、ABAPWAITステートメントを使用して明示的に開始することもできます。クライアントがAPCイベントを明示的に待機できるようにするには、ステートメントWAIT FOR PUSH CHANNEL [UNTIL <log expression> | <最大<秒>秒]。時間値はミリ秒に達する可能性があります。たとえば、FOR PUSH CHANNEL UNTIL <log expression> UP TO’0.01’SECONDS。
次の図は、APCクライアントの単純な対話モデルを示しています(接続タイプに依存しません)。接続のセットアップが成功すると、イベントハンドラーメソッドON_OPENが実行されます。イベントハンドラメソッドON_MESSAGEおよびON_CLOSEは、受信(クローズ)メッセージの後で、関連するABAPセッションがアイドル/待機状態になるとすぐに実行されます。
APCクライアント接続のライフサイクルは、組み込みABAPセッションのライフサイクルにバインドされます(リモートファンクションコール(RFC)やHTTPなどの他の通信プロトコルと同様)。したがって、エラーやダンプなど、ABAPセッションの解放につながるアクションはすべて、APC接続を閉じます。