接続時の動作

説明:

callback Worker::$onConnect

クライアントがWorkermanと接続したときに(TCPの3-wayハンドシェイクが完了した後)発生するコールバック関数です。各接続はonConnectコールバックを1度だけトリガーします。

注意:onConnectイベントはクライアントがWorkermanとのTCP接続を完了したことを表すだけであり、この時点ではクライアントからデータが送信されていません。そのため、$connection->getRemoteIp()を使用して相手方のIPを取得する以外に、クライアントを識別するためのデータや情報はありません。そのため、相手が誰であるかを知りたい場合は、クライアントが認証データを送信する必要があります。たとえば、トークンやユーザー名とパスワードなどの認証データをonMessageコールバックで認証する必要があります。

UDPは無接続なため、UDPを使用している場合、onConnectコールバックはトリガーされませんし、onCloseコールバックもトリガーされません。

コールバック関数のパラメータ

$connection

接続オブジェクトで、つまりTcpConnectionインスタンスであり、クライアント接続を操作するためのものです。たとえば、データを送信する接続を閉じるなどがあります。

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 "IPアドレス" . $connection->getRemoteIp() . "からの新しい接続\n";
};
// Workerの実行
Worker::runAll();

ヒント:コールバックとして匿名関数を使用する他にも、こちらを参照して別のコールバックの書き方を使用することができます。