SignalR系列文章01---MVC專案中建立demo
阿新 • • 發佈:2021-10-20
1、 新建mvc專案,引入指定的nuget包
2、 新增加一個整合器類新增如下的程式碼
/// <summary> /// 供客戶端呼叫的伺服器端程式碼 /// </summary> /// <param name="message"></param> public void Send(string message) { // 呼叫所有客戶端的sendMessage方法 Clients.All.sendMessage(message); }
3、 在Home/Index.cshtml檢視中新增如下的程式碼
@{ ViewBag.Title = "聊天視窗"; } <h2>Chat</h2> <div class="container"> <input type="text" id="message" /> <input type="button" id="sendmessage" value="Send" /> <input type="hidden" id="displayname" /> <ul id="discussion"></ul> </div> @section scripts { <!--引用SignalR庫. --> <script src="~/Scripts/jquery.signalR-2.2.2.min.js"></script> <!--引用自動生成的SignalR 集線器(Hub)指令碼.在執行的時候在瀏覽器的Source下可看到 --> <script src="~/signalr/hubs"></script> <script> $(function () {// 引用自動生成的集線器代理 var chat = $.connection.serverHub; // 定義伺服器端呼叫的客戶端sendMessage來顯示新訊息 chat.client.sendMessage = function (name, message) { // 向頁面新增訊息 $('#discussion').append('<li><strong>' + htmlEncode(name) + '</strong>: ' + htmlEncode(message) + '</li>'); }; // 設定焦點到輸入框 $('#message').focus(); // 開始連線伺服器 $.connection.hub.start().done(function () { $('#sendmessage').click(function () { // 呼叫伺服器端集線器的Send方法 chat.server.send($('#message').val()); // 清空輸入框資訊並獲取焦點 $('#message').val('').focus(); }); }); }); // 為顯示的訊息進行Html編碼 function htmlEncode(value) { var encodedValue = $('<div />').text(value).html(); return encodedValue; } </script> }
4、 根目下新加一個類Startup.cs
public class Startup { public void Configuration(IAppBuilder app) { // 有關如何配置應用程式的詳細資訊,請訪問 http://go.microsoft.com/fwlink/?LinkID=316888 // 配置集線器 app.MapSignalR(); } }
5、 同時啟動多個頁面,一個頁面發信息,在另外幾個頁面可以實時推送過去。實現了實時廣播的效果