程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 基於Tcp通信的聊天程序微風IM(c#開源),

基於Tcp通信的聊天程序微風IM(c#開源),

編輯:C#入門知識

基於Tcp通信的聊天程序微風IM(c#開源),


在微風IM中,當某個客戶端下線後,其他客戶端能夠感知到此用戶已經下線,並把其頭像圖標變成灰色。

感知連接的掉線,是networkcomms框架內置的功能,服務器通過心跳檢測得知某連接掉線,會從networkcomms內部維護的連接列表中刪除此連接,並觸發相應的委托。

我們要處理某連接掉線,只需要注冊  NetworkComms.AppendGlobalConnectionCloseHandler 方法即可

服務器端代碼如下: 

  //如果某客戶端離線,觸發此方法
            NetworkComms.AppendGlobalConnectionCloseHandler(HandleConnectionClosed);

客戶端某用戶離線的處理方法

  //處理某可客戶端離線情況
        private void HandleConnectionClosed(Connection connection)
        {
            try
            {
               
                var tempUserID = "";
                
                lock (syncLocker)
                {
                    //在用戶字典中找到網絡連接相對應的用戶ID
                    foreach (var kv in userManager)
                    {
                        //如果要關閉的網絡連接,與某個用戶的網絡連接相同,則找出此用戶
                        if (kv.Value == connection.ConnectionInfo.NetworkIdentifier)
                        {
                            tempUserID = kv.Key;
                            break;
                        }
                    }

                    if (tempUserID != "")
                    {
                        //如果找到的用戶ID不為空,則從用戶字典中刪除此項
                        if (userManager.ContainsKey(tempUserID))
                        {
                            //連接關閉時,從用戶管理器中刪除該用戶
                            userManager.Remove(tempUserID);
                        }
                    }
                }


                //發送通知給其他客戶端,告知其某個用戶下線 
                if (tempUserID != "")
                {
                    
                    UserStateNotify(tempUserID, false);
                }
                //應該發送一個消息給所有在線的其他用戶
            }
            catch (Exception ex)
            {
                LogTools.LogException(ex, "NetworkComms_ConnectionClosed");
            }
        }

 www.networkcomms.cn

www.cnblogs.com/networkcomms

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved