TsgcWebSocketServer_HTTPAPI › 메서드 › Broadcast
선택적으로 채널, 프로토콜 또는 연결 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에 나타나면 결코 도달하지 않습니다. Asynchronous가 활성화되면 호출은 각 HTTP.sys 쓰기가 완료되기 전에 반환되며 OnAsynchronous 이벤트가 완료를 보고합니다. 비활성화되면 호출은 호출자의 스레드에서 실행되고 프레임이 각 소켓에 대해 큐에 들어가면 반환됩니다. 연결별 쓰기 오류는 브로드캐스트를 중단하지 않고 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 필터를 통과하는 모든 연결에 스트림 콘텐츠를 바이너리 프레임으로 브로드캐스트합니다. 스트림은 현재 위치에서 읽힙니다. 서버는 소유권을 가지지 않으므로, 호출자는 Broadcast가 반환될 때까지(또는 Asynchronous가 활성화된 경우 OnAsynchronous 이벤트가 완료를 보고할 때까지) 스트림을 살아 있게 유지해야 합니다. 매우 큰 페이로드를 하나의 너무 큰 프레임이 아닌 여러 WebSocket 단편으로 스트리밍하려면 aSize를 aStreaming과 함께 사용하십시오. 이는 커널이 발신 데이터를 버퍼링하는 HTTP.sys에서 특히 유용합니다.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;