workerman統(tǒng)計在線人數(shù)實現(xiàn)代碼:(推薦:workerman教程)
服務器端代碼
<?php use workermanWorker; use WorkermanLibTimer; require_once __DIR__ . '/Workerman/Autoloader.php'; $worker = new Worker('websocket://127.0.0.1:2345'); // 全局變量,保存當前進程的客戶端連接數(shù) $connection_count = 0; // 這個例子中進程數(shù)必須為1 $worker->count?=?1; $worker->onConnect?=?function($connection) { ????//?有新的客戶端連接時,連接數(shù)+1 ????global?$connection_count; ???? ????++$connection_count; ????echo?"now?connection_count=$connection_countn"; }; //?進程啟動時設置一個定時器,定時向所有客戶端連接發(fā)送數(shù)據 $worker->onWorkerStart?=?function($worker) { ????//?定時,每10秒一次 ????Timer::add(1,?function()use($worker) ????{ ????????global?$connection_count; ????????//?遍歷當前進程所有的客戶端連接,發(fā)送當前服務器的時間 ????????foreach($worker->connections?as?$connection) ????????{ ????????????$connection->send($connection_count); ????????} ????}); }; $worker->onClose?=?function($connection) { ????//?客戶端關閉時,連接數(shù)-1 ????global?$connection_count; ????$connection_count--; ????echo?"now?connection_count=$connection_countn"; }; //?運行worker Worker::runAll();
當客戶端與Workerman建立連接時(TCP三次握手完成后)觸發(fā)的回調函數(shù)。每個連接只會觸發(fā)一次onConnect回調。
當客戶端連接與Workerman斷開時觸發(fā)的回調函數(shù)。不管連接是如何斷開的,只要斷開就會觸發(fā)onClose。每個連接只會觸發(fā)一次onClose。
客戶端代碼
<?php ?><script></script><script> function ds(){ $.get('127.0.0.1:2345',function(data,status){ console.log("Data: " + data + "nStatus: " + status); }) } // window.setInterval(ds,1000); ws = new WebSocket("ws://127.0.0.1:2345"); ws.onopen = function() { //alert("連接成功"); //ws.send('tom'); //alert("給服務端發(fā)送一個字符串:tom"); }; ws.onmessage = function(e) { //alert("收到服務端的消息:" + e.data); console.log("收到服務端的消息:" + e.data); }; </script>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦