• 配置选项
    • websocket_subprotocol
    • open_websocket_close_frame

    配置选项

    WebSocket\ServerServer的子类,可以使用Server::set方法传入配置选项,设置某些参数。

    websocket_subprotocol

    设置WebSocket子协议。设置后握手响应的Http头会增加Sec-WebSocket-Protocol: {$websocket_subprotocol}。具体使用方法请参考WebSocket协议相关RFC文档。

    1. $server->set([
    2. 'websocket_subprotocol' => 'chat',
    3. ]);

    open_websocket_close_frame

    启用websocket协议中关闭帧(opcode为0x08的帧)在onMessage回调中接收,默认为false。

    开启后,可在WebSocketServer中的onMessage回调中接收到客户端或服务端发送的关闭帧,开发者可自行对其进行处理。

    示例:

    1. $server = new swoole_websocket_server("0.0.0.0", 9501);
    2. $server->set(array("open_websocket_close_frame" => true));
    3. $server->on('open', function (swoole_websocket_server $server, $request) {});
    4. $server->on('message', function (swoole_websocket_server $server, $frame) {
    5. if ($frame->opcode == 0x08) {
    6. echo "Close frame received: Code {$frame->code} Reason {$frame->reason}\n";
    7. } else {
    8. echo "Message received: {$frame->data}\n";
    9. }
    10. });
    11. $server->on('close', function ($ser, $fd) {});
    12. $server->start();