php使用swoole即時更新客戶端數據

*文
發布: 2023-03-18 18:40:01
原創
5121 人瀏覽過

本文主要介紹了php使用swoole即時更新客戶端資料的相關資料,需要的朋友可以參考下。希望對大家有幫助。

如果想對一個清單做即時的更新,傳統的做法是採用輪詢的方式。以web為例,透過Ajax定時請求服務端然後取得資料顯示在頁面。這種方式實現簡單,缺點就是浪費資源。

HTTP1.1新增加了對websocket的支持,這樣就可以將被動展示轉變為主動通知。也就是透過websocket與服務端保持持久鏈接,一旦資料發生變化,由server通知client資料有更新,然後再進行刷新等操作。這樣就省去了很多不必要的被動請求,節省了伺服器資源。

要實作一個webscoket的程序,首先需要使用支援html5的瀏覽器


if(ws === null){
var wsServer = 'ws://'+ location.hostname +':8888';
ws = new WebSocket(wsServer);
ws.onopen = function(){
console.log("socket连接已打开");
};
ws.onmessage = function(e){
console.log("message:" + e.data);
};
ws.onclose = function(){
console.log("socket连接已断开");
};
ws.onerror = function(e){
console.log("ERROR:" + e.data);
};
//离开页面时关闭连接
$(window).bind('beforeunload',function(){
ws.close();
}
);
}
登入後複製


這樣就實現了一個client,不過事情還遠遠沒有結束。上面的程式碼只是簡單的進行了連接,對話,關閉等基本動作。如果想和服務端進行通訊,必須要有更具體的方案。例如收到message時判斷類型進行進一步操作。

服務端:這裡採用Swoole進行php服務端的websocket開發,使用swoole進行php的websocket開發非常簡單,而且它還支援httpserver的支援。


$server = new swoole_websocket_server("0.0.0.0", 8888);
$server->on('open', function (swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
$server->start();
登入後複製


swoole是一個php的擴充功能,安裝方式可以參考這裡:php安裝swoole擴充的方法

#相關建議:

thinkphp5與swoole使用SMTP方式實作非同步郵件群發的實例

#Swoole開發要點介紹

php非同步多執行緒swoole用法實例

以上是php使用swoole即時更新客戶端數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!