十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
在開發(fā) Web 應(yīng)用程序時(shí),我們有時(shí)需要將服務(wù)端事件推送到連接的客戶端。但 HTTP 并不能做到??蛻舳舜蜷_與服務(wù)端的連接并請(qǐng)求數(shù)據(jù),但服務(wù)端不能打開與客戶端的連接并推送數(shù)據(jù)。

為了解決這個(gè)限制,我們可以建立了一個(gè)輪詢模式,網(wǎng)頁會(huì)間隔地輪詢服務(wù)器以獲取新事件。但這種模式不太理想,因?yàn)樗黾恿?HTTP 開銷,速度也只能達(dá)到與輪詢的速率一樣快,并且給服務(wù)器增加了不必要的負(fù)載。
幸運(yùn)的是,HTML5 WebSocket 出現(xiàn)了。WebSocket 協(xié)議允許瀏覽器與 Web 服務(wù)器之間進(jìn)行低開銷的交互。在文中,我們將介紹 Websockets API,并展示如何使用 Spring Boot 實(shí)現(xiàn) Websockets。
HTML5 來救場!
WebSockets 通過瀏覽器和服務(wù)器之間的單連接提供全雙工通信。它不存在 HTTP 開銷,并且允許服務(wù)器將消息實(shí)時(shí)推送到客戶端。
WebSocket API 實(shí)際上很簡單。您只需要?jiǎng)?chuàng)建一個(gè) WebSocket 對(duì)象,附加事件監(jiān)聽器和發(fā)送消息即可。
以下是一個(gè)例子:
var socket = new WebSocket('ws://' + window.location.host + '/my-websocket-endpoint');
// Add an event listener for when a connection is open
socket.onopen = function() {
console.log('WebSocket connection opened. Ready to send messages.');
// Send a message to the server
socket.send('Hello, from WebSocket client!');
};
// Add an event listener for when a message is received from the server
socket.onmessage = function(message) {
console.log('Message received from server: ' + message);
};