雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake

2024-09-04 40

我有一个使用 WebSocket 进行通信的 Xamarin 应用程序。 在客户端,我引用了 ClientWebSocket。

using (var client = new ClientWebSocket() { Options = { KeepAliveInterval = new TimeSpan(0, 0, 3, 0) } })
{
    try
    {
        await client.ConnectAsync(requestUri, cancellationToken); do
        {
            WebSocketReceiveResult result = null; var buffer = new byte[ReceiveChunkSize]; var message = new ArraySegment<byte>(buffer); do
            {
                result = await client.ReceiveAsync(message, cancellationToken); var receivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);
                data.Append(receivedMessage); if (result.MessageType != WebSocketMessageType.Text) break;

            } while (!result.EndOfMessage);

            TranslateData(data);
        } while (client.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested);
    }
}

该应用程序不断间歇性地抛出:

System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake.

服务器有一个测试网站,它似乎可以按预期运行。 看来问题出在客户端。 client.State 中的值为 Open。

这个错误通常是由于服务器或客户端在 WebSocket 连接关闭握手之前关闭了连接,导致连接异常中断而引起的。

要解决这个问题,可以尝试以下步骤:

检查网络连接和服务器状态:这可能是由于网络连接不稳定或服务器过载导致的。尝试重新连接或等待一段时间再尝试。

检查代码实现:检查你的客户端和服务器代码,确保正确地使用 WebSocket API 和正确地处理连接关闭握手。

使用适当的异常处理:为你的代码添加适当的异常处理程序,以便在出现异常时及时检测和处理连接问题。

调试 WebSocket 连接:使用调试工具对 WebSocket 连接进行调试,查看是否有错误或异常。

如果上述步骤无法解决问题,请参考相关文档或与相应的技术支持团队联系以获取更多帮助。

更新于:2个月前
赞一波!

文章评论

评论问答