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"));

주요 속성 및 메서드

가장 자주 사용하게 되는 멤버.

사용자 추가

AddUser(aId, aDisplayName, aStatus, aAvatarURL, aStatusText)는 명단 항목을 upsert합니다. 이미 존재하는 Id는 그 자리에서 업데이트됩니다.

상태

TsgcHTMLPresenceStatuspsOnline, psAway, psBusy, psOffline. SetUserStatus(aId, aStatus, aStatusText)는 상태 표시 점과 텍스트만 업데이트합니다.

레이아웃

LayoutplAvatars(겹쳐진 아바타 스택) 또는 plList(이름 + 상태 행)를 선택합니다. AvatarSize는 아바타 지름을 픽셀 단위로 설정합니다.

초과 인원 제한

MaxVisible(기본값 5)은 "+N" 칩이 나타나기 전에 표시할 사용자 수의 상한을 정합니다. 모든 사용자는 마크업에 그대로 남아 있으므로 이후의 푸시도 정상적으로 대상을 찾습니다.

헤더

TitleShowCount는 온라인 인원 수 배지가 포함된 헤더를 렌더링합니다. GetOnlineCountpsOffline 사용자를 제외합니다.

스트리밍 업데이트

GetUserFragmentHTML(aId)(RemoveUser 호출 후에는 삭제도 내보냅니다), GetCountFragmentHTMLGetMoreFragmentHTMLTsgcHTMX_Engine_Server.PushFragment / BroadcastFragment에 사용됩니다.

계속 살펴보기

온라인 도움말이 찱포넌트의 전체 API 참조 및 사용 가이드입니다.
모든 sgcHTML 컴포넌트80개 이상의 컴포넌트 전체 기능 매트릭스를 둘러보십시오.
무료 체험판 다운로드30일 체험판에는 60.HTML 데모 프로젝트가 포함됩니다.
가격전체 소스 코드가 포함된 Single, Team 및 Site 라이선스.

시작할 준비가 되셨습니까?

무료 체험판을 다운로드하고 Delphi, C++ Builder 또는 .NET 웹 앱에 실시간 접속 현황 목록을 추가하십시오.