回答
通常,使用某種形式的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. Facebook通知如何工作?
- 2. 如何通知機制的工作
- 3. asp.net中的Stackoverflow樣式通知Ajax
- 4. facebook通知如何在反手工作
- 5. 通知方法如何工作
- 6. 通知如何在PostgreSQL中工作?
- 7. PhoneGap的通知不工作
- 8. 通知振動不工作
- 9. 通知$ email_address像任何新的答案像stackoverflow
- 10. StackOverflow的'標記'文本框自動完成工作如何?
- 11. StackOverflow CMD-K密鑰綁定是如何工作的?
- 12. Stackoverflow頁腳動畫是如何工作的?
- 13. 像stackoverflow這樣的網站如何工作?
- 14. 通過Outlook 2003通知TFS工作項?
- 15. 如何使通知燈在Android上的react-native工作?
- 16. 如何在顯示其工作表時通知我的對象?
- 17. 推送通知如何工作,它的要求是什麼?
- 18. Facebook上的通知區域如何工作?
- 19. 未在Testflight上工作的Firebase通知
- 20. 豐富的通知不工作
- 21. Rails的閃光:通知不工作
- 22. Rails的異常通知不工作
- 23. Xamarin的iOS推送通知不工作
- 24. console.log中的工作燈通知錯誤
- 25. Android的通知跑馬燈不工作
- 26. stackoverflow如何編寫評論以這種方式工作?
- 27. 我在哪裏可以閱讀如何在StackOverflow屏幕的左上角製作網頁通知程序(如StackExchange)?
- 28. 我的leakcanary工作嗎?如何知道?
- 29. 不知道Directory.CreateDirectory()是如何工作的
- 30. 打開通知聲音不工作,但通知即將到來
我認爲它被稱爲websockets。 – 2014-11-22 02:10:29