今日の相互に接続された世界では、Webサイトや IoTアプリケーションにおけるリアルタイム更新は非常に重要です。
サイトやアプリケーションに瞬時に情報を配信する方法として、サーバーとクライアントの間に双方向通信のチャンネルを提供する WebSocketプロトコルを使用することができます。4D v20 より、4D.WebSocketServer クラスで WebSocketサーバー を作成することができます。v20 R2 では、4D.WebSocket クラスで WebSocketクライアントを作成し、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())