最近在项目中使用到了Websocket,开始想自己写,懒了, 觉得还是不要造车轮了,于是找到了sgcWebSockets。Demo简单,连接也简单。 用的是 delphi2007 + sgcWebSockets v2.3
WSClient_Eye.Host := sIP;
WSClient_Eye.Port := sPort;
WSClient_Eye.Active := True;
但是,对方的WS地址是 ws://127.0.0.1:8808/main/sm991228,于是简单改造一下,如下:
function WSConn(sUrl: string):Boolean;
var
fsUrl : AnsiString;
sHeader, sIP, sWSResourceName : AnsiString;
sPort : Word;
iPosition1, iPosition2 : Integer;
function Analysis(sIn : string) : Boolean;
begin
Result := False;
try
fsUrl := trim(sIn);
if fsUrl = '' then Exit;
sHeader := LeftStr(fsUrl,5);
if sHeader <> 'ws://' then Exit;
Delete(fsUrl, 1, 5);
iPosition1 := pos(':',fsUrl);
iPosition2 := pos('/',fsUrl);
sIP := copy(fsUrl, 1, (iPosition1-1));
sPort := StrToIntDef(copy(fsUrl, (iPosition1+1), (iPosition2 - iPosition1 - 1)), 0);
sWSResourceName := copy(fsUrl, (iPosition2+1), (Length(fsUrl) - iPosition2));
Result := True;
finally
end;
end;
begin
Result := false;
try
if not Analysis(sUrl) then Exit;
WSClient_Eye.Host := sIP;
WSClient_Eye.Port := sPort;
WSClient_Eye.Options.Parameters := sWSResourceName; //主要就是这一句
WSClient_Eye.Active := True;
Result := True;
finally
end;
end;
其实也很简单, 多看一下源码。