【发布时间】:2020-02-07 17:47:37
【问题描述】:
我正在设置从我的角度前端到 Asp.Net Core 后端的信号器连接。 使用提琴手,我在启动连接时看到多个呼叫。第一次调用没有完成,这对我们的 e2e 测试来说是个问题。
我尝试设置 SkipNegotiation: true, transport: SignalR.HttpTransportType.WebSockets 但由于缺少连接 ID,无法再建立连接
this.hubConnection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl('/api/notificationHub', {
// skipNegotiation: true, transport:
signalR.HttpTransportType.WebSockets
}).build();
this.hubConnection.start().then((x) => {
console.log(x);
}).catch((x) => {
console.log(x);
});
我希望所有调用都能完成。 但实际情况是第一次调用没有完成(或者需要很长时间)
GET http://localhost:4200/api/notificationHub?id=BHSyLOnn5BfBbaFYQ7qboQ
--第一次调用的原始请求
GET http://localhost:4200/api/notificationHub?id=cm1MjKA22om6orpWoDcO3Q HTTP/1.1 主机:本地主机:4200 连接:保持活动 接受:文本/事件流 缓存控制:无缓存 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 Sec-Fetch-Mode: cors Sec-Fetch-Site:同源 推荐人:http://localhost:4200/ 接受编码:gzip、deflate、br 接受语言:nl,en-US;q=0.9,en;q=0.8,nl-NL;q=0.7
--第二次调用的原始请求
POST http://localhost:4200/api/notificationHub?id=BHSyLOnn5BfBbaFYQ7qboQ HTTP/1.1 主机:本地主机:4200 连接:保持活动 内容长度:32 Sec-Fetch-Mode: cors 来源:http://localhost:4200 X-Requested-With: XMLHttpRequest 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 内容类型:text/plain;charset=UTF-8 接受:/ Sec-Fetch-Site:同源 推荐人:http://localhost:4200/ 接受编码:gzip、deflate、br 接受语言:nl,en-US;q=0.9,en;q=0.8,nl-NL;q=0.7
{"protocol":"json","version":1}
【问题讨论】:
-
第一个可能是 OPTION 调用,第二个可能是实际调用。
-
看起来你是对的,但我仍然不明白为什么它没有给出响应或者对于 OPTION 调用来说这是否正常?
-
阅读here 以了解更多关于
OPTION calls的信息