WebSocketクライアント

今日の相互に接続された世界では、Webサイトや IoTアプリケーションにおけるリアルタイム更新は非常に重要です。

サイトやアプリケーションに瞬時に情報を配信する方法として、サーバーとクライアントの間に双方向通信のチャンネルを提供する WebSocketプロトコルを使用することができます。4D v20 より、4D.WebSocketServer クラスで WebSocketサーバー を作成することができます。v20 R2 では、4D.WebSocket クラスで WebSocketクライアントを作成し、WebSocketサーバーに接続することができます。

HDI: WebSocketクライアント

このブログ記事では、WebSocketサーバー のブログ記事で例題に使用されたチャットサーバーに接続します:

この例では、Form.messages コレクションがメッセージを格納し、リストボックスにメッセージを表示します。

WebSocketイベントを管理する

まず、WebSocketイベントを管理するクラスを作成し、インスタンス化する必要があります。そのためには、必要に応じて以下の関数を持つクラスを作成する必要があります:

  • onMessage(): この接続を介したメッセージを受信するたびに呼び出されます。
  • onOpen() WebSocket接続が開かれたときに呼び出されます。
  • onTerminate(): WebSocket接続が終了されるときに呼び出されます。
  • onError(): エラー発生時に呼び出されます。

 

ここでは、サーバーから受信したメッセージを表示し、また、接続が閉じたことを表示します。そこで、次の WSConnectionHandlerクラス を作成します:

Class constructor
	
Function onMessage($ws : Object; $event : Object)
   Form.messages.push($event.data)

Function onTerminate($ws : Object; $event : Object)
   Form.messages.push("WebSocketサーバーが終了されました")
   

そして、ユーザーが書き込んだメッセージをサーバーに送信します:

// WebSocketサーバーに接続している WebSocketクライアントを介してメッセージを送信します
Form.webSocket.send(Form.message)

サーバーに接続する

アプリケーションを WebSocketサーバーに接続するには、4D.WebSocket をインスタンス化する必要があります。最初の引数としてサーバーの URL を、2番目の引数としてWebSocket接続ハンドラーを渡します:

Form.webSocket:=4D.WebSocket.new($wssUrl; cs.WSConnectionHandler.new())

この機能の詳細については、HDIドキュメント を参照ください!

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。