コード例 #1
0
 /// <summary>
 /// 添加客户端聊天服务
 /// </summary>
 /// <param name="key">键</param>
 /// <param name="clientChatService">聊天服务</param>
 public static void AddClientChatService(String key, OwLib.ChatService clientChatService)
 {
     lock (m_clientChatServices)
     {
         m_clientChatServices[key] = clientChatService;
     }
 }
コード例 #2
0
 /// <summary>
 /// 获取客户端聊天服务
 /// </summary>
 /// <param name="key">键</param>
 /// <returns>聊天服务</returns>
 public static OwLib.ChatService GetClientChatService(String key)
 {
     OwLib.ChatService clientChatService = null;
     lock (m_clientChatServices)
     {
         if (m_clientChatServices.ContainsKey(key))
         {
             clientChatService = m_clientChatServices[key];
         }
     }
     return(clientChatService);
 }
コード例 #3
0
ファイル: ChatService.cs プロジェクト: stonezhu870/iteam
 /// <summary>
 /// 接收消息
 /// </summary>
 /// <param name="message">消息</param>
 public override void OnReceive(CMessage message)
 {
     base.OnReceive(message);
     if (DataCenter.IsFull && message.m_functionID == FUNCTIONID_SENDALL)
     {
         DataCenter.ServerChatService.SendAll(message);
     }
     if (message.m_functionID == FUNCTIONID_GETHOSTS)
     {
         List <ChatHostInfo> datas = new List <ChatHostInfo>();
         int type = 0;
         ChatService.GetHostInfos(datas, ref type, message.m_body, message.m_bodyLength);
         if (type != 2)
         {
             int datasSize = datas.Count;
             for (int i = 0; i < datasSize; i++)
             {
                 ChatHostInfo hostInfo = datas[i];
                 //全节点
                 if (hostInfo.m_type == 1)
                 {
                     if (hostInfo.m_ip != "127.0.0.1")
                     {
                         OwLibSV.ChatHostInfo serverHostInfo = new OwLibSV.ChatHostInfo();
                         serverHostInfo.m_ip         = hostInfo.m_ip;
                         serverHostInfo.m_serverPort = hostInfo.m_serverPort;
                         serverHostInfo.m_type       = hostInfo.m_type;
                         DataCenter.ServerChatService.AddServerHosts(serverHostInfo);
                         String newServer = hostInfo.m_ip + ":" + CStr.ConvertIntToStr(hostInfo.m_serverPort);
                         List <ChatHostInfo> hostInfos = new List <ChatHostInfo>();
                         UserCookie          cookie    = new UserCookie();
                         if (DataCenter.UserCookieService.GetCookie("DANDANSERVERS", ref cookie) > 0)
                         {
                             hostInfos = JsonConvert.DeserializeObject <List <ChatHostInfo> >(cookie.m_value);
                         }
                         int  hostInfosSize = hostInfos.Count;
                         bool contains      = false;
                         for (int j = 0; j < hostInfosSize; j++)
                         {
                             ChatHostInfo oldHostInfo = hostInfos[j];
                             String       key         = oldHostInfo.ToString();
                             if (key == newServer)
                             {
                                 contains = true;
                                 break;
                             }
                         }
                         if (!contains)
                         {
                             hostInfos.Add(hostInfo);
                             cookie.m_key   = "DANDANSERVERS";
                             cookie.m_value = JsonConvert.SerializeObject(hostInfos);
                             DataCenter.UserCookieService.AddCookie(cookie);
                         }
                         String            key2            = hostInfo.ToString();
                         OwLib.ChatService findChatService = DataCenter.GetClientChatService(key2);
                         if (findChatService == null)
                         {
                             int socketID = OwLib.BaseService.Connect(hostInfo.m_ip, hostInfo.m_serverPort);
                             if (socketID != -1)
                             {
                                 OwLib.ChatService clientChatService = new OwLib.ChatService();
                                 DataCenter.AddClientChatService(key2, clientChatService);
                                 OwLib.BaseService.AddService(clientChatService);
                                 clientChatService.Connected = true;
                                 clientChatService.ToServer  = type == 1;
                                 //clientChatService.RegisterListener(DataCenter.ChatRequestID, new ListenerMessageCallBack(GintechMessageCallBack));
                                 clientChatService.SocketID = socketID;
                                 clientChatService.Enter();
                             }
                         }
                         else
                         {
                             OwLib.ChatService clientChatService = DataCenter.GetClientChatService(key2);
                             if (!clientChatService.Connected)
                             {
                                 int socketID = OwLib.BaseService.Connect(hostInfo.m_ip, hostInfo.m_serverPort);
                                 if (socketID != -1)
                                 {
                                     clientChatService.Connected = true;
                                     clientChatService.SocketID  = socketID;
                                     clientChatService.Enter();
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     SendToListener(message);
 }