boboshan 2015-05-27 09:04
浏览 2483

websocket 服务器端onmessage中遍历发送消息后触发error,

对应进程的客户端也没收到消息,由于线程退出或应用程序请求,已中止 I/O 操作。
遍历部分和异常部分代码:
WsHandler client = list.Find(obj => obj.Uid.ToLower() == rooms[i].UserUid.ToLower());
if (client != null && client.WebSocketContext.WebSocket.State == WebSocketState.Open)
{
// client.WebSocketContext.WebSocket.State
client.Send(message);

}

    /// <summary>
    /// 异常
    /// </summary>
    public override void OnError()
    {
        if (this.Error != null)
        {
            Core.Logger.Log.Write(this.Error.ToString(), Core.Logger.MessageType.Error);
        }
        try
        {
            WsWorker.list.Remove(this);
        }
        catch (Exception ex)
        {
            Core.Logger.Log.Write(ex.ToString(), Core.Logger.MessageType.Error);
        }
    }
            ------------------------------------------------------
            onerror之后出发了onclose,但是客户端没有收到close的消息,个人判断可能是因为路由等中间原因导致客户端判断连接正常,没有发起重新连接请求,不知道加个心跳机制能不能解决问题,或者有更好的方法。
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 C# datagridview 栏位进度
    • ¥15 vue3页面el-table页面数据过多
    • ¥100 vue3中融入gRPC-web
    • ¥15 kali环境运行volatility分析android内存文件,缺profile
    • ¥15 写uniapp时遇到的问题
    • ¥15 vs 2008 安装遇到问题
    • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
    • ¥15 找一个网络防御专家,外包的
    • ¥100 能不能让两张不同的图片md5值一样,(有尝)
    • ¥15 informer代码训练自己的数据集,改参数怎么改