出现这个错误是因为 WebSocket 连接在 15 秒后被关闭了,可能是由于网络问题或服务器上的其他问题导致的。可以尝试以下
检查网络连接和 WebSocket 连接配置,确保两者都正确设置。
将服务器端代码修复为处理 WebSocket 连接问题,并在超时后重新创建 WebSocket 连接。例如,可以使用以下代码:
public class WebSocketManager
{
private readonly HttpClient _httpClient;
public WebSocketManager(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task Connect(string uri)
{
var socket = new ClientWebSocket();
await socket.ConnectAsync(new Uri(uri), CancellationToken.None);
return socket;
}
public async Task Reconnect(WebSocket socket, CancellationToken token)
{
while (!socket.CloseStatus.HasValue && !token.IsCancellationRequested)
{
try
{
await Task.Delay(3000, token); // 3秒后重新尝试
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
socket.Dispose(); // 关闭并释放资源
}
catch (Exception ex)
{
// 处理异常
}
await Connect(url);
}
}
}
@using Microsoft.AspNetCore.SignalR.Client
@code{
private HubConnection _hubConnection;
private bool _isConnected;
protected override async Task OnInitializedAsync()
{
_hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/hub"))
.Build();
_hubConnection.On("ReceiveMessage", (message) => {
//