TCP 连接

支持者

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

默认情况下,sgcWebSocket 使用 WebSocket 作为协议,但您可以在客户端和服务器组件中使用普通 TCP 协议。

 

客户端组件

禁用 WebSocket 协议。


Client.Specifications.RFC6455 := False;
 

 

服务器组件

处理 OnUnknownProtocol 事件,将 Transport 设置为 trpTCP 并接受连接。


procedure OnUnknownProtocol(Connection: TsgcWSConnection;  var Accept: Boolean);
begin
  Connection.Transport := trpTCP;
  Accept := True;
end;

 

当客户端连接到服务器时,该连接将被定义为 TCP,并使用纯 TCP 协议而非 WebSocket。纯 TCP 连接不区分文本消息和二进制消息,因此所有接收到的消息都通过 OnBinary 事件处理。

 

消息结束

如果消息较大,有时可能以分片方式接收。可以通过指定要查找的字节来检测消息结尾。示例:在 STOMP 协议中,所有消息均以字节 0 和 10 结尾。


procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
  Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
  Connection.AddTCPEndOfFrame(0);
  Connection.AddTCPEndOfFrame(10);
end;