回答
通常,使用某種形式的AJAX。
AJAX是指只允許更新頁面的一部分的一組技術。通常,它涉及JavaScript(通常是jQuery)調用Web服務,該服務返回請求的數據(並可選擇更新數據)。客戶端腳本隨後根據需要顯示數據。
儘管許多變化都是圍繞某種Web服務構建的更高級的抽象,
這樣做的例子超出了stackoverflow答案的範圍。但網絡上有很多例子。您可以在文章Calling Web Services Using AJAX中看到使用WebForms和jQuery的示例。
它是客戶端請求還是服務器推送? – MCTaylor17 2014-11-22 02:18:23
StackOverflow使用websocket在客戶端和服務器之間保持開放連接,從中可以將數據從服務器傳遞到客戶端。這通常優於AJAX輪詢,因爲數據是將推送給客戶端,而不是必須通過AJAX請求進行輪詢和拉取。最有可能的SO回落到舊版本瀏覽器的舊AJAX輪詢方法不具有對網絡套接字支持
從this pusher.com文章:
的WebSockets表示期待已久的演變在客戶端/服務器網絡 技術。它們允許在客戶端和服務器之間建立一個長期持久的單一TCP套接字連接,該連接允許 雙向全雙工消息立即分發,而且開銷很小,從而導致非常低的延遲連接。
This SO post很好地解釋了不同的客戶端 - 服務器的通信方式
實際的代碼看起來是這樣的利弊:
StackExchange.realtime = function() {
function Socket(options) {
var array = options.split(",");
var length = array.length;
var i = index % length;
var url = array[i];
if (null != url && (0 != url.indexOf("ws://") && (0 != url.indexOf("wss://") && (url = ("https:" === document.location.protocol ? "wss://" : "ws://") + url))), "WebSocket" in window || "MozWebSocket" in window) {
if (self) {
try {
publish("closing WebSocket");
self.close();
} catch (c) {
}
}
if (!self) {
try {
self = "WebSocket" in window ? new WebSocket(url) : new MozWebSocket(url);
} catch (ex) {
return publish("Sockets disabled - " + ex.message), void 0;
}
self.onopen = function() {
if (!U) {
U = true;
}
index = 0;
publish("WebSocket opened");
f();
handle();
setInterval(done, 6E4);
};
self.onmessage = function(msg) {
var self = $.parseJSON(msg.data);
mockPlugin.emitEvent(self.action, [self.data]);
};
self.onclose = function() {
self = null;
publish("WebSocket closed");
if (5 > index) {
if (D > 0) {
index++;
D--;
publish("reconnect attempt:" + index + " max retries:" + D);
setTimeout(function() {
StackExchange.realtime.init(options);
}, (new Date).getTime() % 50/20 * 1E3);
}
}
};
self.onerror = function() {
publish("WebSocket failed");
self = null;
};
}
}
}
function f() {
if (null != self && 1 == self.readyState) {
var i = 0;
var l = elems.length;
for (;l > i;i++) {
publish("sending " + elems[i]);
self.send(elems[i]);
}
}
}
function publish(topic) {
if (StackExchange.options.enableLogging) {
console.log("realtime: " + topic);
}
}
function handle() {
mockPlugin.addListener("hb", function(str) {
self.send(str);
});
}
function next(elm) {
elems.push(elm);
f();
}
function callback(i) {
publish("unsubscribing " + i);
var position = $.inArray(i, elems);
if (-1 != position) {
elems.splice(position, 1);
if (null != self) {
if (1 == self.readyState) {
self.send("-" + i);
}
}
}
}
並被稱爲:
StackExchange.ready(function() {
StackExchange.realtime.init('wss://qa.sockets.stackexchange.com,ws://qa.sockets.stackexchange.com');
StackExchange.realtime.subscribeToInboxNotifications();
StackExchange.realtime.subscribeToReputationNotifications('1');
StackExchange.realtime.subscribeToTopBarNotifications('1');
});
- 1. 如何使消息通知像Stackoverflow?
- 2. Facebook通知如何工作?
- 3. 如何通知機制的工作
- 4. Java的通知如何工作?
- 5. Stackoverflow實時更新如何工作?
- 6. asp.net中的Stackoverflow樣式通知Ajax
- 7. iOS推送通知如何工作?
- 8. 通知方法如何工作
- 9. 等待和通知如何工作?
- 10. 如何讓通知管理員工作?
- 11. 通知如何在PostgreSQL中工作?
- 12. facebook通知如何在反手工作
- 13. PhoneGap的通知不工作
- 14. 通知$ email_address像任何新的答案像stackoverflow
- 15. Toastr通知不工作
- 16. yootheme UIkit通知不工作
- 17. NS通知TableViewController不工作
- 18. PendingIntent不通知工作
- 19. chrome.storage.sync.get通知不工作
- 20. 像stackoverflow這樣的網站如何工作?
- 21. StackOverflow的'標記'文本框自動完成工作如何?
- 22. Stackoverflow頁腳動畫是如何工作的?
- 23. StackOverflow CMD-K密鑰綁定是如何工作的?
- 24. 如何知道工作
- 25. 通過Outlook 2003通知TFS工作項?
- 26. stackoverflow如何通過Gmail完成登錄?
- 27. 推送通知如何工作,它的要求是什麼?
- 28. 如何在顯示其工作表時通知我的對象?
- 29. Facebook上的通知區域如何工作?
- 30. 基於服務器的通知如何在android上工作?
我認爲它被稱爲websockets。 – 2014-11-22 02:10:29