我建立一個網站,我需要更新項目計數器,只要其更新在數據庫中。當任何用戶添加一個新項目時,項目計數器應該在瀏覽器中自動更新,但我不想一次又一次地向服務器發送Ajax請求以從DB獲取計數,然後在Web瀏覽器中更新計數器。如何更新計數器而不發送請求到服務器
我想要類似的「如何facebook通知更新」自動刷新頁面或發送任何ajax請求,我知道有使用一些推技術,但我不知道它是如何工作的。
如果有人提供了一些示例代碼來實現這一點,這將是非常好的。
謝謝...
我建立一個網站,我需要更新項目計數器,只要其更新在數據庫中。當任何用戶添加一個新項目時,項目計數器應該在瀏覽器中自動更新,但我不想一次又一次地向服務器發送Ajax請求以從DB獲取計數,然後在Web瀏覽器中更新計數器。如何更新計數器而不發送請求到服務器
我想要類似的「如何facebook通知更新」自動刷新頁面或發送任何ajax請求,我知道有使用一些推技術,但我不知道它是如何工作的。
如果有人提供了一些示例代碼來實現這一點,這將是非常好的。
謝謝...
你有沒有考慮過使用SignalR?
這是基於快速POC閱讀一些SO答覆後上述物品的示例代碼。希望能幫助到你。
通過的NuGet
添加SignalR包添加UserCounter.cs與下面的代碼。只需要從Hub基類繼承這個類。
using SignalR.Hubs;
public class UserCounter : Hub { }
添加一個Default.aspx的與下面的代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<div>
Number of users currently online - <b><span id="noOfUsers">0</span> users</b>
<br />
<a target="_blank" href="UpdateNoOfUsers.aspx">Change number of users</a>
</div>
</form>
</body>
<script src="Scripts/jquery-1.6.4.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR.js" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var usc = $.connection.userCounter;
usc.noOfUsersUpdated = function (message) {
$('#noOfUsers').text(message);
};
$.connection.hub.start();
});
</script>
</html>
添加UpdateNoOfUsers.aspx與下面的代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<div>
No. of users: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>
</form>
</body>
</html>
添加事件處理程序的按鈕 - 點擊UpdateNoOfUsers.aspx中的按鈕
using SignalR;
using SignalR.Infrastructure;
using SignalR.Hosting.AspNet;
protected void Button1_Click(object sender, EventArgs e)
{
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<UserCounter>();
clients.noOfUsersUpdated(TextBox1.Text);
}
運行設置「的Default.aspx」作爲啓動頁面上的「用戶更改號碼」
點擊後的應用程序鏈接,打開一個新的瀏覽器窗口
在文本輸入一個數字然後單擊按鈕查看基本窗口中的值更改!在其他一些瀏覽器中打開此頁面並查看相同的行爲!