1. 程式人生 > >SignalR Self Host+MVC等多端消息推送服務(2)

SignalR Self Host+MVC等多端消息推送服務(2)

寫到 後端 local -1 顯示 rgs 代碼 發送 登錄

一、概述

上次的文章中我們簡單的實現了SignalR自托管的服務端,今天我們來實現控制臺程序調用SignalR服務端來實現推送信息,由於之前我們是打算做審批消息推送,所以我們的demo方向是做指定人發送信息,至於做聊天消息和全局廣播,這裏就不在進行演示了。

二、創建控制臺客戶端

1、在SignalRProject解決方案下新建一個名為Clinet的控制臺

技術分享

2、在程序包管理控制臺中輸入以下命令

技術分享
1 Install-Package Microsoft.AspNet.SignalR.Client  
View Code

技術分享

3、修改Clinet項目中的Program.cs代碼

技術分享
 1 using Microsoft.AspNet.SignalR.Client;
 2 using System;
 3 
 4 namespace Clinet
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Console.Write("請輸入用戶名: ");
11             string clientName = Console.ReadLine();
12 
13 
14             var
url = "http://localhost:10086/"; 15 var connection = new HubConnection(url); 16 var chatHub = connection.CreateHubProxy("IMHub"); 17 18 connection.Start().ContinueWith(t => 19 { 20 if (!t.IsFaulted) 21 {
22 //連接成功,調用Register方法 23 chatHub.Invoke("Register", clientName); 24 } 25 }); 26 27 //客戶端接收實現,可以用js,也可以用後端接收 28 var broadcastHandler = chatHub.On<string, string>("receivePrivateMessage", (name, message) => 29 { 30 Console.WriteLine("[{0}]{1}: {2}", DateTime.Now.ToString("HH:mm:ss"), name, message); 31 }); 32 33 Console.WriteLine("請輸入接收者名:"); 34 var _name = Console.ReadLine(); 35 Console.WriteLine("請輸入發送信息!"); 36 while (true) 37 { 38 var _message = Console.ReadLine(); 39 chatHub.Invoke("SendPrivateMessage", _name, _message).ContinueWith(t => 40 { 41 if (t.IsFaulted) 42 { 43 Console.WriteLine("連接失敗!"); 44 } 45 }); 46 Console.WriteLine("請輸入接收者名:"); 47 _name = Console.ReadLine(); 48 Console.WriteLine("請輸入發送信息!"); 49 } 50 } 51 } 52 }
View Code

技術分享

4、右鍵單擊解決方案——>選擇屬性——>啟動項目——>多啟動項目——>將Clinet和Server設置為啟動,如下:

技術分享

5、F5運行後,再開一個Clinet,在第一個Client中輸入用戶名為a,登錄後Server中顯示出登錄a的ID,在另一個Clinet中輸入用戶名為b,登錄後Server中顯示出登錄b的ID,然後根據提示信息,a Clinet中輸入接收信息的人為b,輸入hello後按Enter後,b Client顯示出了a輸入的信息,如下圖:

技術分享

自此控制臺調用SignalR服務端,實現消息推送的Demo就完成了,今天先寫到這,下一章我們實現B/S端調用SignalR服務來推送消息

SignalR Self Host+MVC等多端消息推送服務(2)