asp.net 推模式 用SignalR實現
顯示介面
打開3個這樣的介面,再一個中輸入發送信息,在其他介面中會同時得到數據。
1.下載 SignalR jquery.signalR.js,並且引用。
2.建立MVC工程。
3.在Global.asax中加入註冊項目,註冊連接項目
protected void Application_Start()
{
RouteTable.Routes.MapConnection<myconnection>("echo", "echo/{*operation}");
}
4.建立myconnection類,繼承PersistentConnection
重寫 ,其中clientId是發送數據的用戶信息,可以指定給特定用戶或者用戶組
protected override Task OnReceivedAsync(string clientId, string data)
{
// Broadcast data to all clients
//在這裡進行數據處理
data = string.Format("數據是:{0} 時間是:{1}", data, DateTime.Now.ToString());
return Connection.Broadcast(data);
}
代碼如下:
public class myconnection : PersistentConnection { protected override Task OnReceivedAsync(string clientId, string data) { // Broadcast data to all clients data = string.Format("數據是:{0} 時間是:{1}", data, DateTime.Now.ToString()); return Connection.Broadcast(data); } }
5.在Index.cshtml頁面中進行調用
<script type="text/javascript"> $(function () { var connection = $.connection('echo'); connection.received(function (data) { $('#messages').append('<li>' + data + '</li>'); }); connection.start(); $("#broadcast").click(function () { connection.send($('#msg').val()); }); }); </script>
介面代碼如下:
@{ ViewBag.Title = "Home Page"; } <script type="text/javascript"> $(function () { var connection = $.connection('echo'); connection.received(function (data) { $('#messages').append('<li>' + data + '</li>'); }); connection.start(); $("#broadcast").click(function () { connection.send($('#msg').val()); }); $("#btnStop").click(function () { connection.stop(); }); }); </script> <h2>@ViewBag.Message</h2> <input type="text" id="msg" /> <input type="button" id="broadcast" value="發送" /> <input type="button" id="btnStop" value="停止" /> <ul id="messages"> </ul>
可以開始,停止。
var connection = $.connection('echo'); 取得連接
囘調函數:
connection.received(function (data) {
$('#messages').append('<li>' + data + '</li>');
});
開始連接 : connection.start();
停止連接: connection.stop();
源碼下載:https://files.cnblogs.com/Teco/MvcApplicationSignalR.rar
上述代碼:我註釋掉 return Connection.Broadcast(data);
只給自己發送,如果要全部發送,請使用 return Connection.Broadcast(data);