真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在Asp.net中利用SignalR實(shí)現(xiàn)一個(gè)聊天室功能-創(chuàng)新互聯(lián)

本篇文章為大家展示了如何在Asp.net中利用SignalR實(shí)現(xiàn)一個(gè)聊天室功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍子湖企業(yè)網(wǎng)站建設(shè),龍子湖品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍子湖網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,龍子湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

實(shí)現(xiàn)思路


要想實(shí)現(xiàn)群聊的功能,首先我們需要?jiǎng)?chuàng)建一個(gè)房間,然后每個(gè)在線用戶可以加入這個(gè)房間里面進(jìn)行群聊,我們可以為房間設(shè)置一個(gè)的名字來(lái)作為標(biāo)識(shí)。那SignalR類庫(kù)里面是否有這樣現(xiàn)有的方法呢?答案是肯定的。


// IGroupManager接口提供如下方法
// 作用:將連接ID加入某個(gè)組
// Context.ConnectionId 連接ID,每個(gè)頁(yè)面連接集線器即會(huì)產(chǎn)生ID
// roomName分組的名稱
Groups.Add(Context.ConnectionId, roomName);

// 作用:將連接ID從某個(gè)分組移除
Groups.Remove(Context.ConnectionId, roomName);

// IHubConnectionContext接口提供了如下方法
// 調(diào)用客戶端方法向房間內(nèi)所有用戶群發(fā)消息 
// Room:分組名稱
// new string[0]:過(guò)濾(不發(fā)送)的連接ID數(shù)組
 Clients.Group(Room, new string[0]).clientMethod

上面的代碼也就是實(shí)現(xiàn)群聊的核心方法。Groups對(duì)象說(shuō)白了也就是SignalR類庫(kù)維護(hù)的一個(gè)列表對(duì)象而已,其實(shí)我們完全可以自己來(lái)維護(hù)一個(gè)Dictionary>這個(gè)對(duì)象,創(chuàng)建一個(gè)房間的時(shí)候,我們將房間名稱和進(jìn)入房間的客戶端的ConnectionId加入到這個(gè)字典里面,然后在聊天室里面點(diǎn)發(fā)送消息的時(shí)候,我們根據(jù)房間名查找到所有加入群聊的ConnectionId,然后調(diào)用Clients.Clients(IList connectionIds)方法來(lái)將消息群發(fā)到每個(gè)客戶端。以上也就是實(shí)現(xiàn)聊天室的原理。

使用SignalR實(shí)現(xiàn)聊天室的功能
理清楚了實(shí)現(xiàn)思路之后,接下來(lái)我們就看下具體的實(shí)現(xiàn)代碼,同時(shí)大家也可以對(duì)照代碼來(lái)對(duì)照前面的實(shí)現(xiàn)思路。
首先看下聊天室功能所涉及實(shí)體類的實(shí)現(xiàn)代碼:


/// 
 /// 用戶類
 /// 
 public class User
 {
  /// 
  /// 用戶Id
  /// 
  public string UserId { get; set; }

  /// 
  /// 用戶的連接集合
  /// 
  public List Connections { get; set; }

  /// 
  /// 用戶房間集合,一個(gè)用戶可以加入多個(gè)房間
  /// 
  public List Rooms { get; set; }

  public User()
  {
   Connections = new List();
   Rooms = new List();
  }
 }

 public class Connection
 {
  //連接ID
  public string ConnectionId { get; set; }

  //用戶代理
  public string UserAgent { get; set; }
  //是否連接
  public bool Connected { get; set; } 
 }

  /// 
 /// 房間類
 /// 
 public class ChatRoom
 {
  // 房間名稱
  public string RoomName { get; set; }

  // 用戶集合
  public List Users { get; set; }

  public ChatRoom()
  {
   Users = new List();
  }
 }

 /// 
 /// 上下文類,用來(lái)模擬EF中的DbContext
 /// 
 public class ChatContext
 {
  public List Users { get; set; }

  public List Connections { get; set; }

  public List Rooms { get; set; }

  public ChatContext()
  {
   Users = new List();
   Connections = new List();
   Rooms = new List();
  }
 }

上述內(nèi)容就是如何在Asp.net中利用SignalR實(shí)現(xiàn)一個(gè)聊天室功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)題目:如何在Asp.net中利用SignalR實(shí)現(xiàn)一個(gè)聊天室功能-創(chuàng)新互聯(lián)
地址分享:http://weahome.cn/article/cejphi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部