connections
說明:
array Worker::$connections
格式為
array(id=>connection, id=>connection, ...)
此屬性中存儲(chǔ)了當(dāng)前進(jìn)程的所有的客戶端連接對(duì)象,其中id為connection的id編號(hào),詳情見手冊(cè)TcpConnection的id屬性。
$connections
在廣播時(shí)或者根據(jù)連接id獲得連接對(duì)象非常有用。
如果得知connection的編號(hào)為$id
,可以很方便的通過$worker->connections[$id]
獲得對(duì)應(yīng)的connection對(duì)象,從而操作對(duì)應(yīng)的socket連接,例如通過$worker->connections[$id]->send('...')
發(fā)送數(shù)據(jù)。
注意:如果連接關(guān)閉(觸發(fā)onClose),對(duì)應(yīng)的connection
會(huì)從$connections
數(shù)組里刪除。
注意:開發(fā)者不要對(duì)這個(gè)屬性做修改操作,否則可能造成不可預(yù)知的情況。
范例
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('text://0.0.0.0:2020');
// 進(jìn)程啟動(dòng)時(shí)設(shè)置一個(gè)定時(shí)器,定時(shí)向所有客戶端連接發(fā)送數(shù)據(jù)
$worker->onWorkerStart = function($worker)
{
// 定時(shí),每10秒一次
Timer::add(10, function()use($worker)
{
// 遍歷當(dāng)前進(jìn)程所有的客戶端連接,發(fā)送當(dāng)前服務(wù)器的時(shí)間
foreach($worker->connections as $connection)
{
$connection->send(time());
}
});
};
// 運(yùn)行worker
Worker::runAll();