SignalR說明


SignalR說明。

SignalR服務(wù)

重寫了之前的那套ASP.MVC寄宿IIS模式的Websocket通訊亏拉。
客戶端采用winform實(shí)現(xiàn)所有需求.IIS只作為一個(gè)服務(wù)啟動(dòng)赌结。

圖示:



圖上功能均已實(shí)現(xiàn)
核心

事件驅(qū)動(dòng):

登錄(實(shí)質(zhì)觸發(fā)了服務(wù)器的connection)>監(jiān)聽(監(jiān)聽服務(wù)器的消息推送和點(diǎn)對(duì)點(diǎn)發(fā)送)>發(fā)送(廣播选浑,推送給所有已經(jīng)監(jiān)聽的客戶端,點(diǎn)對(duì)點(diǎn):推送給已經(jīng)監(jiān)聽的指定客戶端如客戶端未監(jiān)聽P2P則收不到該條消息。)

實(shí)現(xiàn):

登錄(注冊(cè)廣播點(diǎn)對(duì)點(diǎn)監(jiān)聽嘹吨,觸發(fā)了connection事件服務(wù)器廣播了登錄者ID)

>監(jiān)聽開啟(監(jiān)聽服務(wù)器的消息推送和點(diǎn)對(duì)點(diǎn)發(fā)送妖混,在監(jiān)聽之前的消息收不到)

>緩存(實(shí)質(zhì)是在登錄的時(shí)候就監(jiān)聽并觸發(fā)了獲取消息列表的事件)

思路:

每次新客戶端連接傳遞用戶名服務(wù)器判斷用戶集合中是否存在該用戶名對(duì)象,有則移除并給予一個(gè)新的ConnectID章郁,其他屬性一一賦值枉氮。

每次發(fā)送消息往消息集合中存入一條,到達(dá)一定閥值后存入LOG或者數(shù)據(jù)庫暖庄。


  public static List<ClientObj> onlineObj = new List <ClientObj>();

//當(dāng)前在線客戶端集合

public static List<MessageObj>onlineObj = new List<MessageObj>();



連接事件內(nèi):

ClientObj obj = new ClientObj

{

ClientName = Context.QueryString["Name"],//客戶端傳遞過來的參數(shù) 可作為唯一客戶端比對(duì)

ConnectionID = Context.ConnectionId,

ConnectTime = DateTime.Now.ToString(),

ClientType = HttpContext.Current.Request.ContentType == "" ? "Winform" : "Browser",

IPAddress = Context.Request.Environment["server.RemoteIpAddress"].ToString() + Context.Request.Environment["server.RemotePort"].ToString()

};

onlineObj.Add(obj);

客戶端調(diào)用方法:


 ///注冊(cè)
               hub.On<string>("SendUserObjList", (data) =>
               {
                   Invoke(new MethodInvoker(() =>
                   {
                       comboBox1.Items.Clear();
                       dataGridView1.DataSource = null;
                       List<ClientObj> list = JsonHelper.DeserializeJsonToList<ClientObj>(data);
                       dataGridView1.DataSource = list;
                       this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;

                       foreach (var item in list)
                       {
                           comboBox1.Items.Add(item.ConnectionID);

                       }
                       comboBox1.SelectedIndex = 0;

                   }));
               });


               hub.On<string>("SendMessageObjList", (data) =>
               {
                   Invoke(new MethodInvoker(() =>
                   {
                       dataGridReive.DataSource = null;
                       List<MessageObj> list = JsonHelper.DeserializeJsonToList<MessageObj>(data);
                       dataGridReive.DataSource = list;
                       this.dataGridReive.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;

                   }));
               });

               hub.Invoke("GetMessageList", name);



               hub.Invoke("GetUser", name);

其他參考代碼注釋聊替。。

————————————————————————————————這應(yīng)該到底了———————————————————————————————————————

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末培廓,一起剝皮案震驚了整個(gè)濱河市惹悄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肩钠,老刑警劉巖泣港,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異价匠,居然都是意外死亡当纱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門霞怀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惫东,“玉大人,你說我怎么就攤上這事×冢” “怎么了颓遏?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滞时。 經(jīng)常有香客問我叁幢,道長(zhǎng),這世上最難降的妖魔是什么坪稽? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任曼玩,我火速辦了婚禮,結(jié)果婚禮上窒百,老公的妹妹穿的比我還像新娘黍判。我一直安慰自己,他們只是感情好篙梢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布顷帖。 她就那樣靜靜地躺著,像睡著了一般渤滞。 火紅的嫁衣襯著肌膚如雪贬墩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天妄呕,我揣著相機(jī)與錄音陶舞,去河邊找鬼。 笑死绪励,一個(gè)胖子當(dāng)著我的面吹牛肿孵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疏魏,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颁井,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蠢护?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤养涮,失蹤者是張志新(化名)和其女友劉穎葵硕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贯吓,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懈凹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悄谐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片介评。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出们陆,到底是詐尸還是另有隱情寒瓦,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布坪仇,位于F島的核電站杂腰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏椅文。R本人自食惡果不足惜喂很,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皆刺。 院中可真熱鬧少辣,春花似錦、人聲如沸羡蛾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽林说。三九已至煎殷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腿箩,已是汗流浹背豪直。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珠移,地道東北人弓乙。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钧惧,于是被迫代替她去往敵國(guó)和親暇韧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理浓瞪,服務(wù)發(fā)現(xiàn)懈玻,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • [SQL注入攻擊] SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫進(jìn)行攻擊的常用手段之一乾颁。隨著B/S模式應(yīng)用開發(fā)的發(fā)展涂乌,使用這種模式...
    James黃杰閱讀 2,663評(píng)論 0 30
  • Awesome DotNet,這又是一個(gè) Awesome XXX 系列的資源整理英岭,由 quozd 發(fā)起和維護(hù)湾盒。內(nèi)容...
    小明yz閱讀 3,695評(píng)論 0 47
  • 一直以來我都不是個(gè)很謹(jǐn)慎的人,曾經(jīng)被偷過N次诅妹,但遭遇騙子還是頭一遭罚勾。坑蒙拐騙偷的行為自古都是被人們所憎恨!那種將收...
    夜雪_5e1b閱讀 288評(píng)論 0 0
  • 慘慘凄凄慘慘凄尖殃,淅淅瀝瀝牛羊泣丈莺。 絨毛已獻(xiàn)供人衣,怨何侵取血肉皮分衫。 一般骨肉同樣痛场刑,問君誰肯食自己。
    真如自在閱讀 318評(píng)論 8 5