Websocket最初被提出是為了解決HTTP協議的一些缺陷,從而提供一種新的在瀏覽器和服務器之間雙向通信的方式。一旦建立Websocket連接,服務器和瀏覽器就能夠實時傳輸數據,而無需瀏覽器不停地向服務器發送請求。這種通信方式賦予了開發人員出色的能力——實時傳輸數據,其用途在于實時通信、多人在線游戲和在線教育等等。
如何使用JavaScript的WebSocket
我們可以使用JavaScript中內置的WebSocket來與服務器建立連接。如下所示:
const socket = new WebSocket('wss://example.com/ws'); socket.addEventListener('open', function (event) { socket.send('Hello Server!'); }); socket.addEventListener('message', function (event) { console.log('Message from server ', event.data); }); socket.addEventListener('close', function (event) { console.log('Server closed the connection'); });
WebSocket實例上的三個事件監聽分別在連接建立完成、收到新消息、連接被關閉時觸發。我們也可以調用close方法來手動關閉連接。
使用 PHP 處理 Websocket 請求
與WebSocket交互的后臺邏輯通常需要負責處理如下兩個任務:維護連接會話和消息廣播。借助PHP實現這些任務非常簡單。我們可以使用ReactPHP Socket服務器,讓它與客戶端建立連接并處理索要執行的任務。以下是一段簡化版的PHP代碼:
on('connection', function($conn) { $conn->on('data', function($data) use ($conn) { // 收到新的消息 // 將消息廣播給所有的客戶端 $conn->write($data); }); $conn->on('close', function() { // 用戶斷開連接 }); }); $loop->run();
這段代碼創建了一個Socket服務器、監聽在127.0.0.1:8000端口處,并且在有新的連接被建立后,可以處理所有客戶端發來的消息。當有新的消息被收到后,服務器會將這條消息廣播給所有與之建立連接的客戶端。
綜上所述,借助JavaScript、PHP和ReactPHP Socket服務器,我們能夠輕松地在Web應用程序中啟用雙向實時通信。