开发环境
php 7.4
安装composer require workerman/workerman
<?php
global $wss;
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/config/config.php';
$ws_worker = new Worker($wss);
$groups = [];
$kickedUsers = [];
$groupUsers = [];
$ws_worker->onConnect = function ($connection) use (&$groups, &$kickedUsers, &$groupUsers, $ws_worker) {
echo "New user connected--------------------------------\n";
$connection->onMessage = function ($connection, $data) use (&$groups, &$kickedUsers, &$groupUsers, $ws_worker) {
$data = json_decode($data, true);
if (isset($data['action'])) {
switch ($data['action']) {
case 'joinGroup':
handleJoinGroup($connection, $data, $groups, $kickedUsers, $groupUsers, $ws_worker);
break;
case 'sendMessage':
case 'kickUser':
handleMessageAndKick($connection, $data, $groups, $kickedUsers, $groupUsers, $ws_worker);
break;
case 'recallMessage':
handleRecallMessage($connection, $data, $groups, $kickedUsers, $groupUsers, $ws_worker);
break;
case 'heartbeat':
$connection->lastHeartbeat = time();
$connection->send(json_encode(['type' => 'heartbeat', 'content' => 'pong']));
break;
default:
$connection->send(json_encode(['type' => 'error', '