クライアントからの接続と
WebSocket サーバーとの双方向接続を確立し、リアルタイムで効率良くデータを交換できるようにします。
GeneXus を使用してアプリケーションとサーバーを作成すると、GeneXus は WebSocket 経由のサーバー接続を自動で設定するほか、クライアントアプリケーションの接続の管理と接続の解除を行います。接続が失われた場合や問題が発生した場合、GeneXus は接続を再確立しようとします。しかし、実装での必要に応じて、Open メソッドと Close メソッドを使用します。このメソッドを使用すると、GeneXus で生成していない WebSocket サーバーとの接続を確立したり、接続を解除したりできます。
操作は
Server.Socket 外部オブジェクトと似ており、 [ Web Notification ] 設定の各種プロパティノードで設定したプロシージャーを使用して、Send、Open、Close のイベントがサーバー側でリッスンされます。詳細については、「
外部アプリケーションから通知メッセージを受信し、処理する方法」を参照してください。
接続の値を返します (Connected (接続) または Disconnected (切断))。読み取り専用です。
指定されたサーバーとの接続を確立します。
戻り値
|
なし
|
パラメーター
|
Url:Character()
|
接続したサーバーとの接続を解除します。
接続中のサーバーにメッセージを送信します。
戻り値
|
なし
|
パラメーター
|
Msg:Character()
|
Open メソッドを実行した後、接続が正常に確立されるとトリガーされます。
ConnectionFailed イベント
Close メソッドを実行した後、何らかの理由により接続がエラーになったり接続が失われたりするとトリガーされます。
MessageReceived
メッセージを受信するとトリガーされます。JSON で受信する文字列データです。DeviceID と受信したメッセージを渡します。
以下は、基本的な WebSocket 経由でのチャットを実装する簡単な例です。
まず、Chat という名のトランザクションを使用して、メッセージのコンテンツと送信日時を格納します。
トランザクションのサンプル:
Panel for Smart Devices を作成します。受信したメッセージを表示するために、項目属性を含むグリッドを追加します。SentMessage という名前の VarChar(200) タイプの変数をドラッグし、Send という名前のボタンを追加します。最後に、このボタンタイプのイベントに次のコードを記入します:
Event 'Send'
GeneXus.Client.Socket.Send(&SentMessage)
Endevent
レイアウトのサンプル:
次のコードを使用して Sender という名前のプロシージャーを作成します。
&Chat = New()
&Chat.ChatMessage = &NotificationInfo.message
&Chat.ChatMessageDateTime = NOW()
&Chat.Save()
Commit
&ServerSocket.Broadcast(&NotificationInfo)
このコードを使用して、DB に新しいメッセージを追加します。次に、メッセージの送信者に関係なく、ブロードキャストして接続中の全ユーザーのグリッドビューを更新します。
注: このプロシージャーの設定方法の詳細については、
「外部アプリケーションから通知メッセージを受信し、処理する方法」の「Received Handler」のセクションを参照してください。
最後に、Panel for Smart Devices で、Refresh を実行する MessageReceived イベントを作成します。
Event Client.Socket.MessageReceived(&Message)
Refresh
EndEvent
実装の一例