TsgcWebSocketProxyServer › 메서드 › Broadcast
프록시의 연결된 모든 WebSocket 클라이언트에 동일한 메시지를 보내며, 선택적으로 채널, protocol 또는 연결 GUID 목록으로 필터링합니다.
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에 나타나면 절대 도달하지 않습니다. 프레임은 각 터널의 브라우저를 향한 측에 기록됩니다. 짝을 이루는 업스트림 TCP 링크는 건드리지 않으므로, 백엔드를 위한 데이터는 대신 연결별 전달 경로를 통해 푸시해야 합니다. LoadBalancer가 활성화되면 호출이 클러스터 전체로 전달되어 원격 노드도 로컬 클라이언트에게 메시지를 전달합니다. 호출은 호출자의 스레드에서 실행되며 프레임이 각 소켓에 전달되면 반환됩니다. 연결별 쓰기 오류는 브로드캐스트를 중단하지 않고 OnException을 통해 보고됩니다.
oServer.Broadcast('Hello From Proxy 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으로, 완전한 독립 실행형 메시지를 보냅니다. |
이 오버로드는 채널, 프로토콜, Include, Exclude 필터를 통과하는 모든 WebSocket 연결에 스트림 콘텐츠를 바이너리 프레임으로 브로드캐스트합니다. 스트림은 현재 위치에서 읽힙니다. 서버는 소유권을 가져가지 않으므로 호출자는 Broadcast가 반환될 때까지 스트림을 살아 있게 유지해야 합니다. 바이너리 페이로드는 각 터널의 브라우저 측에만 전달됩니다. Proxy 백엔드에 공급하는 업스트림 TCP 클라이언트에는 이 호출로 기록되지 않습니다. LoadBalancer가 활성화되면 바이너리 페이로드가 다른 노드로 전달되어 로컬 클라이언트에 다시 전달할 수 있습니다. 매우 큰 페이로드를 하나의 과도한 크기의 프레임 대신 여러 WebSocket 조각으로 스트리밍하려면 aSize를 aStreaming과 함께 사용하십시오.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;