onConnect
說(shuō)明:
callback Worker::$onConnect
當(dāng)客戶端與Workerman建立連接時(shí)(TCP三次握手完成后)觸發(fā)的回調(diào)函數(shù)。每個(gè)連接只會(huì)觸發(fā)一次onConnect
回調(diào)。
注意:onConnect事件僅僅代表客戶端與Workerman完成了TCP三次握手,這時(shí)客戶端還沒(méi)有發(fā)來(lái)任何數(shù)據(jù),此時(shí)除了通過(guò)$connection->getRemoteIp()
獲得對(duì)方ip,沒(méi)有其他可以鑒別客戶端的數(shù)據(jù)或者信息,所以在onConnect事件里無(wú)法確認(rèn)對(duì)方是誰(shuí)。要想知道對(duì)方是誰(shuí),需要客戶端發(fā)送鑒權(quán)數(shù)據(jù),例如某個(gè)token或者用戶名密碼之類,在onMessage回調(diào)里做鑒權(quán)。
由于udp是無(wú)連接的,所以當(dāng)使用udp時(shí)不會(huì)觸發(fā)onConnect回調(diào),也不會(huì)觸發(fā)onClose回調(diào)。
回調(diào)函數(shù)的參數(shù)
$connection
連接對(duì)象,即TcpConnection實(shí)例,用于操作客戶端連接,如發(fā)送數(shù)據(jù),關(guān)閉連接等
范例
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onConnect = function(TcpConnection $connection)
{
echo "new connection from ip " . $connection->getRemoteIp() . "\n";
};
// 運(yùn)行worker
Worker::runAll();
提示:除了使用匿名函數(shù)作為回調(diào),還可以參考這里使用其它回調(diào)寫(xiě)法。