最近のアクセス:
Server.Socket 外部オブジェクト

ソケットを使用する目的は、アクションをリアルタイムで実行して、クライアントから要求されなくてもサーバーがブラウザーにコンテンツを送信 (またはその逆) できるようにすることです。
ユーザーは、リアルタイムで情報を取得するために Web ブラウザーやアプリ (クライアント) を再表示する必要はありません。たとえば、オンラインチャットやメッセージシステムを使用する場合や、コンソールを監視する場合です。
ソケットを Web で使用するには、[ Web User Experience ] プロパティを Smooth に設定する必要があります。

Server.Socket API

Server.Socket API は、Server.Socket 外部オブジェクトと NotificationInfo SDT で構成されます。 

Server.Socket 外部オブジェクト

Server.Socket 外部オブジェクトは、この機能に必要なすべてのメソッドおよびプロパティを公開します。
イメージ:36953.png

Server.Socket 外部オブジェクトのメソッド

メソッド 説明 最も一般的なユースケース
Server.Socket.Notify(NotificationInfo sdtNotification): Numeric アクションを開始したユーザーに通知を送信します。セッション中、有効です。 送信されたプロシージャーが終了したときに、ユーザーにフィードバックを送信します (送信アクションがそのユーザーのセッションから実行された場合)。
Server.Socket.NotifyClient(String clientId, NotificationInfo sdtNotification ): Numeric 指定されたユーザーに通知を送信します。 チャットを実装するために、一部のユーザーのみが通知を受け取ります。
Server.Socket.Broadcast(NotificationInfo sdtNotification) 接続されているユーザーすべてに通知を送信します。 すべてのユーザーにアラートを送信します。
Server.Socket.NotifyClientText(String clientId, String Message ): Numeric Raw メッセージを特定のクライアントに送信します。  

Server.Socket 外部オブジェクトのプロパティ

Server.Socket.ClientId: String 現在のセッションの ClientId を取得します。
ErrCode エラーコード
ErrDescription エラーメッセージ

Server.Socket のメソッド - エラーコード

0 OK
1 WebSocket サーバーを起動できませんでした
2 WebSocket セッションが見つかりません
3 WebSocket セッションが終了しているか、無効です
4 メッセージをクライアントに送信できませんでした

NotificationInfo 構造化データタイプ

NotificationInfo SDT は、Socket.Server 外部オブジェクトの前述のメソッド (Notify、NotifyClient、BroadCast) に送信する通知情報を指定するためのものです。
イメージ:32304.png
Id 開発者は、Id を使用して通知を識別することで、通知を取得するコントロールを指定できます。
Object  このプロパティを指定することで、開発者はこの通知をリッスンするオブジェクトを特定できます (特に Broadcast の場合)。
Message  通知のメッセージです。

例: 全員にメッセージを送信する方法 (ブロードキャスト)

メッセージシステムを実装しており、ユーザーが作成したポストを通知する必要があるとします。この場合、ポストメッセージのデータとともに NotificationInfo SDT をロードします。次に、Server.Socket 外部オブジェクトを使用して、メッセージをブロードキャストします。
//&NotificationInfo は NotificationInfo SDT データタイプ。&PostId はポストの識別子。

&NotificationInfo.Id=&PostId.ToString()
//次は、通知するデータがロードされる SDT。json 形式で送信されるため、任意のデータを送信可能。まず SDT にこのデータをロード。
&commentNotificationInfo.PostId = &PostId
&commentNotificationInfo.PostCommentContent = &PostCommentContent

//次に、json 形式で NotificationInfo SDT に送信するデータを割り当てる
&NotificationInfo.Message=&commentNotificationInfo.ToJson()
&webnotification.Broadcast(&NotificationInfo) //&webnotification は Server.Socket 外部オブジェクトのデータタイプ。

例: 通知を受信する方法

通知を受信する Web オブジェクト内で、NotificationInfo SDT データタイプに基づいて変数を受信する OnMessage イベントを使用します。通知情報はここで処理されます。
Event OnMessage(&NotificationInfo)
for each line
  if (&NotificationInfo.Id=&postid.ToString())
   //通知データを処理
  endif
endfor
Endevent

例: 特定のクライアントに通知を送信する方法

特定のクライアントにのみ通知を送るシステムがあるとします。このクライアントは、Server.Socket 外部オブジェクトの [ ClientId ] プロパティを使用して識別されます。
次に示すのは、通知を受信する Web パネルです。開始イベントでは、後でセッションを識別できるように &clientId を保存します。
Event Start
    &clientId = &webnotification.ClientId
   //クライアントの情報を保存: RegisteredClientId = &clientId//
Endevent
通知を送信するプロシージャーで、&ClientId を取得します (データベースに保存されている可能性があります)。Notifyclient メソッドの実行時に &ClientId をパラメーターとして渡すので、そのクライアントだけがメッセージを受信します。
&ClientId = RegisteredClientId
&NotificationInfo.Id=&cont.ToString()
&NotificationInfo.Message="El mensaje " + &cont.ToString() + "cliente " + &ClientId
&webnotification.NotifyClient(&ClientId, &NotificationInfo) 
注: GeneXus 15 Upgrade 3 以降では、&webnotification.ClientId の代わりに [ ClientInformation.Id ] プロパティを使用できます。

前の例で示したように、メッセージを受信する Web パネルでは、OnMessage イベントを実装する必要があります。

Event onmessage(&notificationInfo)
    //&notificationInfo で何らかの処理を実行
endevent

ブロードキャストメソッドは、パブリックメッセージの場合にのみ実行する必要があります。これは、通知イベントをサブスクライブするすべてのブラウザーインスタンスにそのメッセージが送信されるためです。

要件

Web 通知およびプログレス ユーザー コントロールの要件」を参照してください。
Web ソケットをサポートする Web ブラウザーのリストは、ここで確認できます。Component ドメインを使用して、スマートデバイスのアプリで Web 通知を受信できます (このリンクに示されている OS バージョンを確認)。スマート デバイス アプリケーションの場合は、Client.Socket 外部オブジェクトとともに使用できます。

トラブルシューティング

  • gxgral.js ファイルの最後に行 "gx.dbg.enabled = true" を追加して、追加情報を javascript コンソールに取得できます。
  • 警告メッセージ: "Warning: WebNotifications are not supported with "Web User Experience": "Previous versions".You must use Smooth.".Web Notifications are only supported with Web User Experience property : "Smooth".

参考情報

Html5 Web Notifications User Control
メッセージの機能を使用した Web ページを開発する方法
外部アプリケーションから通知メッセージを受信し、処理する方法



サブページ
Created: 15/01/07 22:48 by Admin Last update: 21/05/21 03:31 by Admin
カテゴリ
Powered by GXwiki 3.0