我有一些 Blazor 服务器端代码,我可以将其减少到这一点:
@foreach (var employee in Employees)
{
<tr>
<td class="btn-group-sm">
<button class="btn btn-outline-danger"
@onclick="() => HandleDelete(employee)">
Delete
</button>
</td>
</tr>
}
并且在单击时调用 HandleDelete(employee),传递它已保存在会话数据中(我假设)的员工对象,以在单击发生时传递。
但是,如果我有多个服务器进行负载平衡,如果将提交事件发送到不同的服务器,会发生什么情况?那个不同的服务器不会有员工对象(我相信)。
这一切是否都取决于 https 会话保持与原始服务器的连接以及所有后续通信都发送到该服务器?
如果是这样,在故障转移情况下会发生什么。在这种情况下,它肯定是与新服务器的连接以获取提交操作。
Blazor Server 不支持完全负载均衡。客户端应始终与同一服务器上的同一 Blazor 线路保持连接。
这可以通过在负载均衡器上使用粘性会话、使用 Azure SignalR 服务或使用 SkipNegotiation 设置来完成。
使用 SkipNegotiation 设置时,负载均衡器应将所有 SignalR 消息广播到所有节点。