public void MqServer_SessionClosed(MQProtocolSession session, CSuperSocket.SocketBase.CloseReason value) { try { if (session.TopicMode.TopicDic.Count > 0) { foreach (var r in session.TopicMode.TopicDic.Keys) //room { foreach (var t in session.TopicMode.TopicDic[r].Keys) //topic { foreach (var g in session.TopicMode.TopicDic[r][t]) //tag { if (mqServer.TopicMessageQueueDict.ContainsKey(r) && mqServer.TopicMessageQueueDict[r].ContainsKey(t) && mqServer.TopicMessageQueueDict[r][t].ContainsKey(g)) { mqServer.TopicMessageQueueDict[r][t][g].Remove(session); } mqServer.TopicMessageQueueDict[r][t][g].TrimExcess(); } } } } } catch (Exception e) { mqServer.Logger.Error(session, new Exception("移除主题字典失败", e)); } mqServer.Logger.Info(session.RemoteEndPoint.ToString() + " closed. reason:" + value); }
private static void Service_SessionClosed(Session session, CSuperSocket.SocketBase.CloseReason value) { Console.WriteLine(session.SessionID + "断开"); }