TsgcWebSocketHTTPServer › 메서드 › Broadcast
연결된 모든 클라이언트에게 동일한 WebSocket 메시지를 보내며, 선택적으로 채널, 프로토콜, 또는 연결 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의 쉼표로 구분된 목록입니다. 비어 있으면 무시됩니다. |
이 오버로드는 제공된 필터와 일치하는, HTTP 서버가 호스팅하는 모든 활성 WebSocket 연결에 텍스트 프레임을 보냅니다. 필터는 AND 의미 체계로 결합됩니다: 연결은 비어 있지 않은 모든 필터를 만족할 때만 메시지를 수신하며, GUID가 Exclude에 나타나면 절대 도달하지 않습니다. Broadcast는 WebSocket 핸드셰이크를 완료한 클라이언트만 대상으로 하므로 순수 HTTP/HTTP2 요청은 무시됩니다. LoadBalancer가 활성화되면 호출이 클러스터 전체로 전달되어 원격 노드도 로컬 클라이언트에게 메시지를 전달합니다. 호출은 호출자의 스레드에서 실행되며 프레임이 각 소켓에 전달되면 반환됩니다. 연결별 쓰기 오류는 브로드캐스트를 중단하지 않고 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으로, 완전한 독립 실행형 메시지를 보냅니다. |
이 오버로드는 채널, 프로토콜, Include 및 Exclude 필터를 통과하는 HTTP 서버가 호스팅하는 모든 WebSocket 연결에 스트림 콘텐츠를 바이너리 프레임으로 브로드캐스트합니다. 스트림은 현재 위치부터 읽힙니다. 서버는 소유권을 가지지 않으므로 호출자는 Broadcast가 반환될 때까지 스트림을 살아 있게 유지해야 합니다. LoadBalancer가 활성화되면 바이너리 페이로드는 다른 노드로 전달되어 로컬 클라이언트에 다시 전달될 수 있습니다. 매우 큰 페이로드를 하나의 과도한 프레임이 아닌 여러 WebSocket 조각으로 스트리밍하려면 aSize를 aStreaming과 함께 사용하십시오.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;