提交 f6b1ecad 编写于 作者: 若汝棋茗

修复webSocket的连接问题

上级 ee8d4ea9
......@@ -13,6 +13,7 @@
using RRQMCore;
using RRQMCore.ByteManager;
using RRQMSocket.Http;
using RRQMSocket.WebSocket.Plugins;
using System.Text;
using System.Threading;
......@@ -78,7 +79,7 @@ namespace RRQMSocket.WebSocket
this.OnHandshaking(new HttpContextEventArgs(request));
var response = this.Request(request, token: token);
if (response.GetHeader("Sec-WebSocket-Accept") != WSTools.CalculateBase64Key(base64Key, Encoding.UTF8))
if (response.GetHeader("sec-websocket-accept") != WSTools.CalculateBase64Key(base64Key, Encoding.UTF8))
{
this.MainSocket.Dispose();
throw new RRQMException("返回的应答码不正确。");
......
......@@ -61,10 +61,10 @@ namespace RRQMSocket.WebSocket
request.SetHeader(HttpHeaders.UserAgent, "RRQMSocket.WebSocket");
request.SetHeader(HttpHeaders.Upgrade, "websocket");
request.SetHeader(HttpHeaders.Origin, "RRQM");
request.SetHeader("Sec-WebSocket-Version", $"{version}");
request.SetHeader("sec-websocket-version", $"{version}");
request.SetHeader(HttpHeaders.AcceptEncoding, "deflate, br");
base64Key = WSTools.CreateBase64Key();
request.SetHeader("Sec-WebSocket-Key", $"{base64Key}");
request.SetHeader("sec-websocket-key", $"{base64Key}");
return request;
}
......@@ -88,19 +88,19 @@ namespace RRQMSocket.WebSocket
/// <returns></returns>
public static bool TryGetResponse(HttpRequest request, out HttpResponse response)
{
string upgrade = request.GetHeader("Upgrade");
string upgrade = request.GetHeader(HttpHeaders.Upgrade);
if (string.IsNullOrEmpty(upgrade))
{
response = null;
return false;
}
string connection = request.GetHeader("Connection");
string connection = request.GetHeader(HttpHeaders.Connection);
if (string.IsNullOrEmpty(connection))
{
response = null;
return false;
}
string secWebSocketKey = request.GetHeader("Sec-WebSocket-Key");
string secWebSocketKey = request.GetHeader("sec-websocket-key");
if (string.IsNullOrEmpty(secWebSocketKey))
{
response = null;
......@@ -109,10 +109,10 @@ namespace RRQMSocket.WebSocket
response = new HttpResponse();
response.StatusCode = "101";
response.StatusMessage = "Switching Protocols";
response.SetHeader(HttpHeaders.Connection, "Upgrade");
response.StatusMessage = "switching protocols";
response.SetHeader(HttpHeaders.Connection, "upgrade");
response.SetHeader(HttpHeaders.Upgrade, "websocket");
response.SetHeader("Sec-WebSocket-Accept", CalculateBase64Key(secWebSocketKey, request.Encoding));
response.SetHeader("sec-websocket-accept", CalculateBase64Key(secWebSocketKey, request.Encoding));
return true;
}
......
......@@ -4,7 +4,7 @@
<ApplicationIcon>RRQM.ico</ApplicationIcon>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>RRQM.pfx</AssemblyOriginatorKeyFile>
<Version>8.0.1</Version>
<Version>8.0.2</Version>
<LangVersion>8.0</LangVersion>
<Company>若汝棋茗</Company>
<Copyright>Copyright © 2021 若汝棋茗</Copyright>
......@@ -14,6 +14,7 @@
更新说明
修改:取消WSService,由插件WebSocketServerPlugin替代其功能。
新增:支持WSCommandLinePlugin,让快捷执行成为可能。
修复:ws连接问题。
API:https://www.yuque.com/eo2w71/rrqm
DEMO:https://gitee.com/RRQM_Home/RRQMBox</Description>
......@@ -78,8 +79,9 @@ DEMO:https://gitee.com/RRQM_Home/RRQMBox</Description>
</ItemGroup>
<ItemGroup>
<PackageReference Include="RRQMSocket" Version="8.0.1" />
<PackageReference Include="RRQMSocket.Http" Version="8.0.1" />
<PackageReference Include="RRQMCore" Version="8.0.3" />
<PackageReference Include="RRQMSocket" Version="8.0.2" />
<PackageReference Include="RRQMSocket.Http" Version="8.0.2" />
</ItemGroup>
</Project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册