Presence
TsgcHTMLComponent_Presence — Delphi, C++ Builder 및 .NET에서 상태 표시 점과 실시간 WebSocket 업데이트를 갖추고, 겹쳐진 아바타 스택 또는 리스트로 렌더링되는 "현재 접속 중" 사용자 목록입니다.
TsgcHTMLComponent_Presence — Delphi, C++ Builder 및 .NET에서 상태 표시 점과 실시간 WebSocket 업데이트를 갖추고, 겹쳐진 아바타 스택 또는 리스트로 렌더링되는 "현재 접속 중" 사용자 목록입니다.
AddUser로 사용자를 추가하고, MaxVisible로 표시할 인원 수의 상한을 정한 다음, HTML 속성을 읽습니다 — 또는 GetUserFragmentHTML로 열려 있는 클라이언트에 상태 변경을 푸시합니다.
TsgcHTMLComponent_Presence
아바타 스택 또는 목록, 범위 지정 CSS 포함
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는 그 자리에서 업데이트됩니다.
TsgcHTMLPresenceStatus — psOnline, psAway, psBusy, psOffline. SetUserStatus(aId, aStatus, aStatusText)는 상태 표시 점과 텍스트만 업데이트합니다.
Layout은 plAvatars(겹쳐진 아바타 스택) 또는 plList(이름 + 상태 행)를 선택합니다. AvatarSize는 아바타 지름을 픽셀 단위로 설정합니다.
MaxVisible(기본값 5)은 "+N" 칩이 나타나기 전에 표시할 사용자 수의 상한을 정합니다. 모든 사용자는 마크업에 그대로 남아 있으므로 이후의 푸시도 정상적으로 대상을 찾습니다.
Title과 ShowCount는 온라인 인원 수 배지가 포함된 헤더를 렌더링합니다. GetOnlineCount는 psOffline 사용자를 제외합니다.
GetUserFragmentHTML(aId)(RemoveUser 호출 후에는 삭제도 내보냅니다), GetCountFragmentHTML 및 GetMoreFragmentHTML은 TsgcHTMX_Engine_Server.PushFragment / BroadcastFragment에 사용됩니다.