次のプログラミング例は、WebSocketプロトコルをサポートするブラウザとApplication Server ABAP(AS ABAP)間の双方向通信を示しています。以下のサンプルプログラムは、現在のアプリケーションサーバのABAPプッシュチャネル(APC)と通信するWebページを表示します。次のオプションをAPCWebSocketアプリケーションに適用できます。
- APC WebSocket接続をABAPメッセージングチャネル(AMC)にバインドします。
- APC WebSocketアプリケーションのプロトコル(Push Channel Protocol(PCP)など)を選択します。
このWebページは、現在のアプリケーションサーバーのプログラムでURLが作成されているICFHTTPサービスによって提供されます。標準ブラウザがWebSocketプロトコルをサポートしていない場合は、代わりに適切なブラウザを使用してURLを開く必要があります。
コミュニケーションパートナーは次のとおりです。
- HTTPリクエストハンドラCL_HTTP_EXT_APC_DEMOまたはCL_HTTP_EXT_APC_PCP_DEMOで生成されたWebページ。最初のWebサイトはPushChannelProtocol(PCP)をサポートせずにWebSocket-Objectを開き、2番目のWebサイトはPCPを使用して同じことを行います。どちらのWebページでも、それぞれのWebSocketオブジェクトを使用してメッセージを送信し、オブジェクトを閉じることができます。これらのタスクは、Webページに実装されているJavaScript関数によって実行されます。PCPを使用する場合は、このプロトコルを使用するためのクライアント側フレームワークを提供するASABAPのMIMEリポジトリからJavaScriptファイルsap-pcp-websocket.jsを含める必要があります。
- 現在のアプリケーションサーバのパッケージSABAPDEMOSからのABAPレポートDEMO_APC_WSPまたはABAPプッシュチャネルDEMO_APC_PCP。後者はPCPをサポートします。プッシュチャネルに割り当てられたサービスのURLは、このWebページのWebSocket通信を開くためにWebページのJavaScript機能で使用されます。フォームフィールドamcがさらに渡されます。APCハンドラクラスCL_APC_WS_EXT_DEMO_APCおよびクラスCL_APC_WSP_EXT_DEMO_APC_PCPは、上記のオプションの有無にかかわらず、インタフェースIF_APC_WSP_EXTENSIONABAPメッセージングチャネルのメソッドON_STARTおよびON_MESSAGEを実装します。ここで使用されるAMCは、/demo_textまたは/demo_pcpとの通信用です。それぞれAMCの例から。メッセージが受信されると、メソッドON_MESSAGEは、受信したメッセージに関する情報を含む新しいメッセージを作成して送信します。PCPがない場合、テキストメッセージが送信されます。PCPでは、そのプロトコルが使用されます。
フォーム項目amc=xを使用してABAPプッシュチャネルが開かれている場合、通信はAMCを使用して行われます。プッシュチャネルにバインドされた各Webページは、AMCを介して送信されるすべてのメッセージを受信します。この例では、これは、メッセージを送信したWebページが、 ON_MESSAGEメソッドによって送信されたメッセージを受信するだけでなく、たとえば、 AMCの送信の例のプログラムDEMO_SEND_AMCを使用して、プッシュチャネルにバインドされたすべてのWebページも受信することを意味します。メッセージ。逆に、 AMCメッセージの受信の例のプログラムDEMO_RECEIVE_AMCは、これらのWebページによって送信されたメッセージを受信します。