지원 대상
기본적으로 sgcWebSocket은 WebSocket을 프로토콜로 사용하지만, 클라이언트 및 서버 구성 요소에서 일반 TCP 프로토콜을 사용할 수 있습니다.
Client 구성 요소
WebSocket 프로토콜을 비활성화합니다.
Client.Specifications.RFC6455 := False;
Server Component
OnUnknownProtocol 이벤트를 처리하고 Transport를 trpTCP로 설정한 후 연결을 Accept하십시오.
procedure OnUnknownProtocol(Connection: TsgcWSConnection; var Accept: Boolean);
begin
Connection.Transport := trpTCP;
Accept := True;
end;
그러면 클라이언트가 서버에 연결할 때, 이 연결은 TCP로 정의되며 WebSockets 대신 일반 TCP 프로토콜을 사용합니다. 일반 TCP 연결은 텍스트와 바이너리 메시지를 구분하지 않으므로, 수신되는 모든 메시지는 OnBinary 이벤트에 의해 처리됩니다.
End of Message
메시지가 큰 경우 때때로 조각화되어 수신될 수 있습니다. 어떤 바이트를 찾을지 지정하여 메시지의 끝을 감지하는 메서드가 있습니다. 예: STOMP 프로토콜에서 모든 메시지는 바이트 0과 10으로 끝납니다.
procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
Connection.AddTCPEndOfFrame(0);
Connection.AddTCPEndOfFrame(10);
end;