Presence コンポーネント — sgcHTML | eSeGeCe

Presence

TsgcHTMLComponent_Presence — Delphi、C++ Builder、.NET で、ステータスドットとライブ WebSocket 更新を備え、重なり合うアバタースタックまたはリストとしてレンダリングされる「オンライン中のユーザー」名簿です。

TsgcHTMLComponent_Presence

AddUser でユーザーを追加し、MaxVisible で表示数の上限を設定してから、HTML プロパティを読み取ります。または GetUserFragmentHTML で開いているクライアントにステータス変更をプッシュします。

コンポーネントクラス

TsgcHTMLComponent_Presence

レンダリング内容

アバタースタックまたはリスト + スコープ付き CSS

ファミリー

チャット & AI

言語

Delphi, C++ Builder, .NET

ユーザーを追加し、レンダリングし、ステータス変更をプッシュする

各ユーザーについて AddUser を呼び出し、初期レンダリングでは HTML を読み取ります。誰かのステータスが変わったら SetUserStatus を呼び出し、GetUserFragmentHTML をプッシュします。

uses
  sgcHTML_Component_Presence;

var
  oPresence: TsgcHTMLComponent_Presence;
begin
  oPresence := TsgcHTMLComponent_Presence.Create(nil);
  try
    oPresence.PresenceID := 'roster';
    oPresence.Layout := plAvatars;
    oPresence.MaxVisible := 5;
    oPresence.Title := 'Online';

    oPresence.AddUser('u1', 'Ana Torres', psOnline);
    oPresence.AddUser('u2', 'Marc Bell', psAway, '', 'Back at 3pm');
    oPresence.AddUser('u3', 'Kenji Ito', psBusy);

    WebModule.Response := oPresence.HTML;   // avatar stack + scoped CSS
  finally
    oPresence.Free;
  end;
end;

// Push a status change to every connected client, no full re-render:
oPresence.SetUserStatus('u2', psOnline);
TsgcHTMX_Engine_Server.BroadcastFragment(oPresence.GetUserFragmentHTML('u2'));
// includes: sgcHTML_Component_Presence.hpp

TsgcHTMLComponent_Presence *oPresence = new TsgcHTMLComponent_Presence(NULL);
try
{
  oPresence->PresenceID = "roster";
  oPresence->Layout = plAvatars;
  oPresence->MaxVisible = 5;
  oPresence->Title = "Online";

  oPresence->AddUser("u1", "Ana Torres", psOnline);
  oPresence->AddUser("u2", "Marc Bell", psAway, "", "Back at 3pm");
  oPresence->AddUser("u3", "Kenji Ito", psBusy);

  String html = oPresence->HTML;   // avatar stack + scoped CSS

  // Push a status change to every connected client:
  oPresence->SetUserStatus("u2", psOnline);
  TsgcHTMX_Engine_Server::BroadcastFragment(oPresence->GetUserFragmentHTML("u2"));
}
__finally
{
  delete oPresence;
}
using esegece.sgcWebSockets;

var presence = new TsgcHTMLComponent_Presence();
presence.PresenceID = "roster";
presence.Layout = TsgcHTMLPresenceLayout.plAvatars;
presence.MaxVisible = 5;
presence.Title = "Online";

presence.AddUser("u1", "Ana Torres", TsgcHTMLPresenceStatus.psOnline);
presence.AddUser("u2", "Marc Bell", TsgcHTMLPresenceStatus.psAway, "", "Back at 3pm");
presence.AddUser("u3", "Kenji Ito", TsgcHTMLPresenceStatus.psBusy);

string html = presence.HTML;   // avatar stack + scoped CSS

// Push a status change to every connected client, no full re-render:
presence.SetUserStatus("u2", TsgcHTMLPresenceStatus.psOnline);
TsgcHTMX_Engine_Server.BroadcastFragment(presence.GetUserFragmentHTML("u2"));

主なプロパティとメソッド

最もよく使うメンバーです。

Adding users

AddUser(aId, aDisplayName, aStatus, aAvatarURL, aStatusText) は名簿エントリーを upsert します。既存の Id はその場で更新されます。

Status

TsgcHTMLPresenceStatuspsOnlinepsAwaypsBusypsOfflineSetUserStatus(aId, aStatus, aStatusText) はステータスドットとテキストのみを更新します。

Layout

LayoutplAvatars(重なり合うアバタースタック)または plList(名前 + ステータス行)を選択します。AvatarSize はアバターの直径をピクセルで設定します。

Overflow cap

MaxVisible(デフォルト 5)は「+N」チップが表示されるまでのユーザー表示数の上限です。すべてのユーザーはマークアップ内に残るため、後からのプッシュでも見つけられます。

TitleShowCount は、オンライン人数バッジ付きのヘッダーをレンダリングします。GetOnlineCountpsOffline のユーザーを除外します。

Streaming updates

GetUserFragmentHTML(aId)RemoveUser が呼び出されると削除も発行します)、GetCountFragmentHTMLGetMoreFragmentHTMLTsgcHTMX_Engine_Server.PushFragment / BroadcastFragment に渡します。

さらに詳しく

オンラインヘルプこのコンポーネントの完全な API リファレンスと使用ガイドです。
すべての sgcHTML コンポーネント80 以上のコンポーネントの全機能マトリックスを閲覧できます。
無料体験版のダウンロード30 日間の体験版には 60.HTML デモプロジェクトが付属します。
価格完全なソースコード付きの Single、Team、Site ライセンス。

始める準備はできましたか?

無料体験版をダウンロードして、Delphi、C++ Builder、.NET の Web アプリにライブプレゼンス名簿を追加しましょう。