TsgcWebSocketLoadBalancerServer › 메서드 › Broadcast
선택적으로 채널, 프로토콜 또는 연결 GUID 목록으로 필터링하여, 클러스터의 모든 백업 서버에 WebSocket 메시지를 팬아웃합니다.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Name | Type | 설명 |
|---|---|---|
aMessage | const string | 일치하는 각 클라이언트에게 WebSocket 텍스트 프레임으로 전달되는 텍스트 페이로드입니다. |
aChannel | const string | 비어 있지 않은 경우, 메시지는 지정된 채널을 구독한 클라이언트에만 전송됩니다. |
aProtocol | const string | 비어 있지 않으면 메시지가 지정된 WebSocket 서브프로토콜을 사용하는 클라이언트에만 전송됩니다. |
Exclude | const String | 이 브로드캐스트에서 건너뛰어야 하는 연결 GUID의 쉼표로 구분된 목록입니다. |
Include | const String | 브로드캐스트를 해당 하위 집합으로 제한하는 연결 GUID의 쉼표로 구분된 목록입니다. 비어 있으면 무시됩니다. |
이 오버로드는 로드 밸런서를 통해 텍스트 프레임을 보내, 등록된 모든 백업 서버가 자체적으로 로컬에 연결된 WebSocket 클라이언트에 이를 재전달하도록 합니다. 필터는 AND 의미론으로 결합됩니다: 연결은 비어 있지 않은 모든 필터를 충족할 때만 메시지를 수신하며, GUID가 Exclude에 나타나면 결코 도달하지 않습니다. 순수 HTTP/HTTP2 요청은 무시됩니다. Broadcast는 WebSocket 핸드셰이크를 완료한 클라이언트만 대상으로 하기 때문입니다. 로드 밸런서는 페이로드를 각 백업 노드에 차례로 전달합니다. 연결별 쓰기 오류는 브로드캐스트를 중단하지 않고 OnException을 통해 보고됩니다. 호출은 호출자의 스레드에서 실행되며 프레임이 백업 서버로 향하는 각 링크에 전달되면 반환됩니다.
oServer.Broadcast('Hello From Server');
procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | 설명 |
|---|---|---|
aStream | TStream | 일치하는 각 클라이언트에 WebSocket 바이너리 프레임으로 콘텐츠가 전달되는 소스 스트림입니다. 호출자는 여전히 스트림의 소유자로 남습니다. |
aChannel | const string | 비어 있지 않은 경우, 메시지는 지정된 채널을 구독한 클라이언트에만 전송됩니다. |
aProtocol | const string | 비어 있지 않으면 메시지가 지정된 WebSocket 서브프로토콜을 사용하는 클라이언트에만 전송됩니다. |
Exclude | const String | 이 브로드캐스트에서 건너뛰어야 하는 연결 GUID의 쉼표로 구분된 목록입니다. |
Include | const String | 브로드캐스트를 해당 하위 집합으로 제한하는 연결 GUID의 쉼표로 구분된 목록입니다. 비어 있으면 무시됩니다. |
aSize | const Integer | 선택적 프래그먼트 크기(바이트)입니다. 0보다 크면 각 클라이언트는 이 크기로 분할된 스트림을 수신합니다. 전체 스트림을 단일 프레임으로 보내려면 0(기본값)을 사용하십시오. |
aStreaming | const TwsStreaming | 프래그먼트 전송을 위한 스트리밍 모드(stmNone, stmStart, stmContinue, stmFinish)입니다. 기본값은 stmNone으로, 완전한 독립 실행형 메시지를 보냅니다. |
이 오버로드는 스트림 콘텐츠를 로드 밸런서를 통해 바이너리 프레임으로 브로드캐스트하며, 로드 밸런서는 페이로드를 등록된 모든 백업 서버로 전달하여 그들이 로컬 WebSocket 클라이언트에 이를 재전달할 수 있게 합니다. 스트림은 현재 위치에서 읽힙니다. 로드 밸런서는 소유권을 가져가지 않으므로, 호출자는 Broadcast가 반환될 때까지 스트림을 유지해야 합니다. 채널, 프로토콜, Include, Exclude 필터는 각 백업 노드가 자체 연결에 프레임을 디스패치할 때 평가됩니다. 매우 큰 페이로드를 하나의 과대한 프레임 대신 여러 WebSocket 프래그먼트로 스트리밍하려면 aSize를 aStreaming과 함께 사용하십시오.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;