swoole中websoket创建在线聊天室(php)
阅读原文时间:2023年07月09日阅读:2

swoole中websoket创建在线聊天室(php)

swoole现仅支持Linix,macos

首先现在服务器创建一个websocket服务器

<?php
//创建websocket服务器
$server = new Swoole\WebSocket\Server("0.0.0.0", 6060);

// 当WebSocket客户端与服务器建立连接并完成握手后会回调此函数
$server->on('open', function (Swoole\WebSocket\Server $server, Swoole\Http\Request $request) {

});

// 服务器主动向客户端发送数据
$server->on('message', function (Swoole\WebSocket\Server $server, swoole_websocket_frame  $frame) {
    $data = $frame->data;
    $ret['data'] = $data;

    //广播群发
    foreach ($server->connections as $client) {
        //判断客户端是否自己
        if ($frame->fd == $client) {
            $ret['style'] = 'bubble me';
        } else {
            $ret['style'] = 'bubble you';
        }
        @$server->push($client, json_encode($ret, 256));
    }
});

// 客户端关闭连接时触发此回调函数
$server->on('close', function ($ser, $fd) {

});
// 启动服务
$server->start();

创建一个简单可用的swoole聊天室

  • 引用文件下载地址:https://files.cnblogs.com/files/jurij/chat.zip


    在线聊天室




    在线人员
    • 张三 10:09
    • 李四 10:44
    • 王五 10:50
    聊天室
            <div class="write">
                <input type="text" v-model="msg" placeholder="输入内容" @keydown.enter="send"/>
                <!-- vue 修饰符 once prevent stop enter shift alt -->
                <a @click.prevent="send" class="write-link send"></a>
            </div>
        </div>
    </div>