1. 程式人生 > 其它 >SignalR系列文章01---MVC專案中建立demo

SignalR系列文章01---MVC專案中建立demo

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、 同時啟動多個頁面,一個頁面發信息,在另外幾個頁面可以實時推送過去。實現了實時廣播的效果