一 首先建立一個控制台需要引用一些組件

特別要注意引用Microsoft.Owin.Host.HttpListener別忘了這個組件,不引用他可能程序正常運行不會報錯,但服務器一直開啟失敗(我之前就是掉過這個坑了)
二、建立一個控制台程序且建立集線器類MsgHub繼承Microsoft.AspNet.SignalR.Hub

三、初始化服務端

四、調用InitSinalR方法即可啟用成功服務端

到此完成服務端程序,客戶端只需要請求上面地址即可運行
五、寫到這只是完成了客戶和服務消息傳遞,怎么將第三方消息發到客戶端呢???
其實Microsoft.AspNet.SignalR里面有一個全局類GlobalHost,通過這個可以全局找到我們想要的hub
如: var hub = GlobalHost.ConnectionManager.GetHubContext<MsgHub>(); 這樣我們就可以在任何地方調用hub方法

六、還使用了Topshelf組件,這樣可以通過window服務部署程序了
1 namespace SFBR_MsgForwardingService 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 HostFactory.Run(x => 8 { 9 x.Service<Startup>(s => 10 { 11 s.ConstructUsing(name => new Startup()); 12 s.WhenStarted(tc => tc.Start()); 13 s.WhenStopped(tc => tc.Stop()); 14 }); 15 x.RunAsLocalSystem(); 16 17 x.SetDescription("SFBR消息轉發服務"); 18 x.SetDisplayName("SFBR消息轉發服務"); 19 x.SetServiceName("SFBR_MsgForwardingService"); 20 }); 21 } 22 } 23 }
七、客戶端調用
1.開啟服務端,服務器運行正常后,可以通過瀏覽器測試是否正常 http://localhost:6178/signalr/hubs,顯示以下界面說明正常

2.需要引用 <script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
3.通過ajax請求js數據,請求到數據后先注冊注冊客戶端方法,再開啟連接成功,
<script type="text/javascript"> var chat; //連接方法 var connect = function (url, userID) { $.ajax({ url: url + "/hubs", type: "get", dataType: "text", success: function (data) { eval(data); console.log("開始連接") $.connection.hub.url = url; $.connection.hub.qs = { "userId": userID }; chat = $.connection.msgHub; // 注冊客戶端方法 registerClient(); // 連接成功后注冊服務器方法 $.connection.hub.start().done(function () { console.log(url + "連接成功"); $('#sendmessage').click(function () { chat.server.send($('#displayname').val(), $('#message').val()); $('#message').val('').focus(); }) }); //斷開連接后 $.connection.hub.disconnected(function () { console.log("已斷開連接"); }); }, error: function (XMLHttpRequest, textStatus, errorThrown) { isLoaded = -1; }, }); } $(function () { var userId = prompt('Enter your name:', ''); //Set the hubs URL for the connection connect("http://192.168.137.112:6178/signalr",userId); }); // 注冊客戶端方法 var registerClient=function () { if (chat) { //接收消息1 chat.client.addMessage = function (name, message) { console.log(message); var encodedName = $('<div />').text(name).html(); var encodedMsg = $('<div />').text(message).html(); $('#discussion').append('<li><strong>' + encodedName + '</strong>: ' + encodedMsg + '</li>'); }; //接收消息2 chat.client.allInfo = function (message) { console.log(message); var encodedMsg = $('<div />').text(message).html(); $('#discussion').append('<li><strong>' + '</strong>: ' + encodedMsg + '</li>'); } } } </script>
4.客戶端代碼調用不具體說明,比較簡單,注冊客戶端方法的時候方法名稱首字母必須小寫
八、因文檔功底比較差,具體實現請看代碼,完整代碼實例 github地址:https://github.com/lxshwyan/SFBR_MsgForwardingService.git
