這篇文章主要為大家詳細介紹了SignalR Self Host+MVC等多端訊息推送服務的第二篇,具有一定的參考價值,感興趣的小夥伴們可以參考一下
一、概述
上次的文章中我們簡單的實現了SignalR自託管的服務端,今天我們來實現控制台程式調用SignalR服務端來實現推送資訊,由於之前我們是打算做審批訊息推送,所以我們的demo方向是做指定人發送資訊,至於做聊天訊息和全域廣播,這裡就不在進行示範了。
二、建立控制台用戶端
1、在SignalRProject解決方案下建立一個名為Clinet的控制台
2、在程式包管理主控台中輸入以下命令
Install-Package Microsoft.AspNet.SignalR.Client
3、修改Clinet項目中的Program.cs代碼
using Microsoft.AspNet.SignalR.Client;using System;namespace Clinet{ class Program { static void Main(string[] args) { Console.Write("請輸入使用者名稱: "); string clientName = Console.ReadLine(); var url = "http://localhost:10086/"; var connection = new HubConnection(url); var chatHub = connection.CreateHubProxy("IMHub"); connection.Start().ContinueWith(t => { if (!t.IsFaulted) { //串連成功,調用Register方法 chatHub.Invoke("Register", clientName); } }); //用戶端接收實現,可以用js,也可以用後端接收 var broadcastHandler = chatHub.On<string, string>("receivePrivateMessage", (name, message) => { Console.WriteLine("[{0}]{1}: {2}", DateTime.Now.ToString("HH:mm:ss"), name, message); }); Console.WriteLine("請輸入接收者名:"); var _name = Console.ReadLine(); Console.WriteLine("請輸入發送資訊!"); while (true) { var _message = Console.ReadLine(); chatHub.Invoke("SendPrivateMessage", _name, _message).ContinueWith(t => { if (t.IsFaulted) { Console.WriteLine("串連失敗!"); } }); Console.WriteLine("請輸入接收者名:"); _name = Console.ReadLine(); Console.WriteLine("請輸入發送資訊!"); } } }}
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服務來推送訊息