Swoole\WebSocket\Server->on('Open', fn)

Notice: the documentation is suitable for PHP extension swoole until v4.7.1, we only support PHP extension openswoole from v4.7.1

Declaration

<?php
Swoole\WebSocket\Server->on('Open', callable $callback)

Parameters

event

The event name to set a callback for

callback

Callable function for the server event type

Return

If success, it returns true, otherwise it returns false

Description

This function is executed when a new WebSocket connection is established and has completed the Handshake stage.

However, this event is only triggered if you have not implemented your own handshake function, if you have defined your own Handshake event callback, then Swoole won't trigger the Open event as it is up to you to provide this logic. See the Handshake event documentation for more information about this.

You are not required to register this callback event.

Example

The Swoole\Http\Request $request object that is passed to the Open event contains HTTP request data and information about the completed handshake the client went through.

In the Open event callback you can push data back to the client if you need to or even decide to close the connection at this stage.

<?php

use Swoole\WebSocket\Server;
use Swoole\Http\Request;
use Swoole\WebSocket\Frame;

$server = new Server("127.0.0.1", 9501);

$server->on("Start", function(Server $server)
{
    echo "Swoole WebSocket Server started at 127.0.0.1:9501\n";
});

$server->on('Open', function(Server $server, Swoole\Http\Request $request)
{
    echo "connection open: {$request->fd}\n";

    $server->tick(1000, function() use ($server, $request)
    {
        $server->push($request->fd, json_encode(["hello", time()]));
    });
});

$server->on('Message', function(Server $server, Frame $frame)
{
    echo "received message: {$frame->data}\n";
    $server->push($frame->fd, json_encode(["hello", time()]));
});

$server->on('Close', function(Server $server, int $fd)
{
    echo "connection close: {$fd}\n";
});

$server->start();