導航:首頁 > 編程語言 > php通知客戶端

php通知客戶端

發布時間:2023-05-29 07:40:59

① 如何在php後端及時推送消息給客戶端

如果是php做的web項目的話,常用的方式是從頁面前端答尺用ajax定期(如15秒發送一次)發送非同步請旁襪求清啟高給php伺服器詢問是否有新消息,如果有的話則播放提示音、顯示未讀消息標識。

② 如何在php後端及時推送消息給客戶端

讓客戶端定時檢查伺服器上有沒有新消息,比如5分鍾檢查一次

③ 如何在php後端及時推送消息給客戶端

當php伺服器有新消息時,即可把消息推送到php客戶端: 按你的意思應該就是局部動態刷新了,就比如那種在線聊天室,這個要用ajax來實現哦
你可以去後盾人平台看一下,裡面的東西不錯

④ 如何在php後端及時推送消息給客戶端

任何WEB應用都是塵並被動的,也就是說它不會主動向客戶端發送數據,只有當WEB伺服器接收到請求,才會向客戶檔蔽端發送數據。
所以,不存在你所說的派蠢跡推送消息給客戶端。
但是客戶端可以反過來拉取消息,可以讓客戶端定時發送請求來獲取數據。

⑤ PHP怎麼實現主動向客戶端發送信息

實現消息推送首先需要瀏覽器支持 websocket 協議,這是前提,然後再通過瀏覽器發起websocket 請求到伺服器,建立一條連接,這是伺服器端就可以通過這條連接向瀏覽器推送消息了。

伺服器端對websocket的支持可以通過一些第三方庫來實現,供參考

  1. hoa/websocket網頁鏈接

  2. swoole 庫

⑥ 如何在php後端及時推送消息給客戶端

讓客戶嘩猛知端定時檢查伺服器上有沒有新消亂消息,比如5分鍾檢查一次
你可以去後盾,那裡我覺知攜得挺好的,只是個人認為,他那裡教學質量挺好的!不喜勿噴!

⑦ 如何在php後端及時推送消息給客戶端

都是前端主動來鍵液請求稿瞎物後端,因為前端是各種各樣的客戶端,不知道推送給誰的,只神扮有它自己來請求(就像樓上說的這些技術),我告知它結果

⑧ 如何在php後端及時推送消息給客戶端

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
// 初始化一個worker容器,監聽1234埠
$worker = new Worker('websocket://0.0.0.0:1234');
// 這里進程數必須設置為1
$worker->count = 1;
// worker進程啟動後建立一個內部通訊埠
$worker->onWorkerStart = function($worker)
{
// 開啟一個內部埠,方便內部系消灶褲統推送數據,Text協議格式 文本+換行符
$inner_text_worker = new Worker('Text://拿簡0.0.0.0:5678');
$inner_text_worker->onMessage = function($connection, $buffer)
{
global $worker;
// $data數組格式,裡面有uid,表示向那個uid的頁面推送數據
$data = json_decode($buffer, true);
$uid = $data['uid'];
// 通過workerman,向uid的頁面推送數據
$ret = sendMessageByUid($uid, $buffer);
// 返回推送結果
$connection->send($ret ? 'ok' : 'fail');
};
$inner_text_worker->listen();
};
// 新增加一個屬性,用來保存uid到connection的映射
$worker->uidConnections = array();
// 當有客戶端發來消息時執行的回調函數
$worker->onMessage = function($connection, $data)use($worker)
{
// 判斷當前客戶端是否已經驗證,既是否辯賀設置了uid
if(!isset($connection->uid))
{
// 沒驗證的話把第一個包當做uid(這里為了方便演示,沒做真正的驗證)
$connection->uid = $data;
/* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,
* 實現針對特定uid推送數據
*/
$worker->uidConnections[$connection->uid] = $connection;
return;
}
};

// 當有客戶端連接斷開時
$worker->onClose = function($connection)use($worker)
{
global $worker;
if(isset($connection->uid))
{
// 連接斷開時刪除映射
unset($worker->uidConnections[$connection->uid]);
}
};

// 向所有驗證的用戶推送數據
function broadcast($message)
{
global $worker;
foreach($worker->uidConnections as $connection)
{
$connection->send($message);
}
}

// 針對uid推送數據
function sendMessageByUid($uid, $message)
{
global $worker;
if(isset($worker->uidConnections[$uid]))
{
$connection = $worker->uidConnections[$uid];
$connection->send($message);
return true;
}
return false;
}

// 運行所有的worker(其實當前只定義了一個)
Worker::runAll();

啟動後端服務
php push.php start -d

前端接收推送的js代碼
var ws = new WebSocket('ws://127.0.0.1:1234');
ws.onopen = function(){
var uid = 'uid1';
ws.send(uid);
};
ws.onmessage = function(e){
alert(e.data);
};

後端推送消息的代碼
// 建立socket連接到內部推送埠
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
// 推送的數據,包含uid欄位,表示是給這個uid推送
$data = array('uid'=>'uid1', 'percent'=>'88%');
// 發送數據,注意5678埠是Text協議的埠,Text協議需要在數據末尾加上換行符
fwrite($client, json_encode($data)."\n");
// 讀取推送結果
echo fread($client, 8192);

這里的uid不一定是用戶的id,也可以理解為任務id即 taskid

以上代碼親測可以直接使用

⑨ 如何在php後端及時推送消息給客戶端

用PHP後端推送消息給客戶端:

1、自己搭建的話建立socket長連接進行通訊,可參考框架(workerman)。
2、用開源系統,參考:極光推送,友盟推送等第三方。

⑩ 如何在php後端及時推送消息給客戶端

用socket連接方式,而不是納昌http
如果你用http的話,需要客戶端定時兆行訪問伺服器。
或者使用長連接。
但用http做這種族茄嘩事情明顯是不明智的,如果訪問量大的話,還是得用socket.
如果訪問量不大,可以先用定時器實現。

閱讀全文

與php通知客戶端相關的資料

熱點內容
伺服器端渲染的數據怎麼爬 瀏覽:163
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:309
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:721
演算法的基礎問題 瀏覽:256
蘋果手機怎麼選擇app支付 瀏覽:856
訪問加密伺服器失敗怎麼回事 瀏覽:439
程序員每天跑步5公里 瀏覽:789
黨員對程序員有幫助么 瀏覽:550
慢跑穿壓縮衣還是緊身衣 瀏覽:214
什麼伺服器引擎最好 瀏覽:497