San*_*han 8 azure websocket signalr asp.net-core
两者有什么区别
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(environment.API_URL + "invoicinghub", {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
})
.withAutomaticReconnect([0, 2000, 10000, 30000, null])
.build();
Run Code Online (Sandbox Code Playgroud)
和
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(environment.API_URL + "invoicinghub", {
transport: signalR.HttpTransportType.WebSockets
})
.withAutomaticReconnect([0, 2000, 10000, 30000, null])
.build();
Run Code Online (Sandbox Code Playgroud)
这是什么skipNegotiation:true。
谢谢!
egl*_*ase 12
在 SignalR 中,客户端首先向服务器发送协商请求,服务器用重定向 URL 和访问令牌(如果有)进行响应。
客户要求
{
"connectionId":"807809a5-31bf-470d-9e23-afaee35d8a0d",
"availableTransports":[
{
"transport": "WebSockets",
"transferFormats": [ "Text", "Binary" ]
},
{
"transport": "ServerSentEvents",
"transferFormats": [ "Text" ]
},
{
"transport": "LongPolling",
"transferFormats": [ "Text", "Binary" ]
}
]
}
Run Code Online (Sandbox Code Playgroud)
服务器响应
{
"url":"https://test.service.signalr.net/client/?hub=chat&...",
"accessToken":"<a typical JWT token>"
}
Run Code Online (Sandbox Code Playgroud)
客户端只有收到服务器的响应后才建立连接。
在 SignalR Core 中,但在 SignalR ASP 中,这需要粘性会话。为了避免使用粘性会话,客户端需要跳过协商,但仅限于在websockets没有 Azure 的情况下使用。
资料来源:
| 归档时间: |
|
| 查看次数: |
9534 次 |
| 最近记录: |