WebSocket ,indy10 求高手指点迷津!
我用的是 delphi7 ,用HTML文件做为客户端,delphi7 的 INDY10版本的IdTCPServer1控件。
连接后,DELPHI程序IdTCPServer1Execute 事件收到网页发来的信息:,但是一直无法握手成功
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:8080
Origin: null
Sec-WebSocket-Key: /mbLym4mEC4Lbx5al1ELVg==
Sec-WebSocket-Version: 13
=======================
然后,我在DELPHI服务器用下面的代码来发送
if (copy(scommand,1,17)='Sec-WebSocket-Key') then begin ////读取客户信息,SHA加密等
ssKey:=copy(scommand,19,length(scommand))+'258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
jjstr:='';
SHA1Init(SHA1Context); //开始SHA加密
SHA1Update(SHA1Context, PChar(ssKey), Length(ssKey));
SHA1Final(SHA1Context, SHA1Digest);
s2:=EncodeString(PChar(@SHA1Digest) );
jjstr:=s2;
end;
if copy(scommand,1,21)='Sec-WebSocket-Version' then begin //发送握手验证信息
Handshake:=true;
AContext.Connection.Socket.WriteLn('HTTP/1.1 101 Switching Protocols');
AContext.Connection.Socket.WriteLn('Upgrade: WebSocket');
AContext.Connection.Socket.WriteLn('Connection: Upgrade');
AContext.Connection.Socket.WriteLn('Sec-WebSocket-Accept: '+jjstr );
AContext.Connection.Socket.WriteLn('WebSocket-Origin: http://127.0.0.1');
AContext.Connection.Socket.WriteLn('WebSocket-Location: ws://127.0.0.1:8080');
end;
我遇到的问题是,无法握手验证通过,好像不管我发送什么HTML那边都再没有信息返回,
网页和程序之间无法发送信息,实在解决不了,请大哥大姐指点一下,感激不尽!!