基於Tcp通訊的聊天程式微風IM(c#開源) -技術分析(三) 用戶端下線

來源:互聯網
上載者:User

標籤:

在微風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

 

基於Tcp通訊的聊天程式微風IM(c#開源) -技術分析(三) 用戶端下線

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.