TsgcWebSocketClient | Client Exceptions

때때로 통신에서 오류가 발생합니다: 서버는 권한이 없거나 메시지 형식이 올바르지 않다는 이유로 연결을 끊을 수 있습니다. 오류가 포착되는 2개의 이벤트가 있습니다.

OnError

이 이벤트는 잘못된 메시지 유형, 잘못된 utf8 문자열 등과 같은 WebSocket 프로토콜 오류가 있을 때마다 발생합니다.

OnError는 WriteData, WriteAndWaitData 또는 Ping이 클라이언트가 연결되지 않아, 또는 WriteData와 WriteAndWaitData의 경우 WebSocket 핸드셰이크가 아직 완료되지 않아 메시지를 보낼 수 없을 때도 Connection = nil과 함께 발생합니다. 이때 Error 매개변수는 Data not sent, the client is not connected or its handshake has not completed.입니다. 호출자에게 예외가 발생하지 않으며 클라이언트도 연결이 끊어지지 않으므로, 이 이벤트에서 Connection을 사용하기 전에 항상 nil 여부를 확인하십시오.


procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
  WriteLn('#error: ' + Error);
end;

 

OnException

이 이벤트는 활성 상태가 아닌 소켓에 쓰거나 존재하지 않는 객체에 액세스하는 등 예외가 있을 때마다 발생합니다.

 


procedure OnException(Connection: TsgcWSConnection; E: Exception);
begin
  WriteLn('#exception: ' + E.Message);
end;

기본적으로 서버에 의해 연결이 닫히면, 예외가 발생합니다. 이러한 예외가 발생하지 않도록 하려면, Options.RaiseDisconnectExceptions를 비활성화하십시오.

Options.RaiseDisconnectExceptions는 클라이언트가 연결되지 않아 보낼 수 없었던 메시지에 대한 OnError 보고도 제어합니다. 이전 버전처럼 이러한 메시지를 조용히 버리려면 False로 설정하십시오.