服务器工具类
优质
小牛编辑
145浏览
2023-12-01
类名: Imi\Server\Server
服务器工具类
方法
getServer
获取服务器
$server = Server::getServer(); // 获取当前服务器
$server = Server::getServer('serverName'); // 获取指定名称的服务器
sendMessage
发送消息给 Worker 进程,使用框架内置格式
返回成功发送消息数量
// 发送给所有 Worker
Server::sendMessage('动作', [
// 数据
]);
// 发送给指定 Worker
Server::sendMessage('动作', [
// 数据
], 0);
// 发送给指定多个 Worker
Server::sendMessage('动作', [
// 数据
], [0, 1, 2]);
sendMessageRaw
发送消息给 Worker 进程
返回成功发送消息数量
// 发送给所有 Worker
Server::sendMessageRaw('数据');
// 发送给指定 Worker
Server::sendMessageRaw('数据', 0);
// 发送给指定多个 Worker
Server::sendMessageRaw('数据', [0, 1, 2]);
send
发送数据给指定客户端,支持一个或多个(数组)
数据将会通过处理器编码
// 发送给当前连接
Server::send([
// 数据
]);
// 发送给指定连接
Server::send([
// 数据
], 1);
// 发送给指定多个连接
Server::send([
// 数据
], [1, 2, 3]);
// 指定服务名,支持监听多个子服务器的情况
Server::send([
// 数据
], 1, 'myServer');
// SWOOLE_BASE 模式下只发送给当前 worker 进程中的连接
Server::send([
// 数据
], 1, 'myServer', false);
sendByFlag
发送数据给指定标记的客户端,支持一个或多个(数组)
数据将会通过处理器编码
// 需要有绑定过的连接,才可以使用此方法
\Imi\ConnectContext::bind('user1');
// 发送给当前连接
Server::sendByFlag([
// 数据
]);
// 发送给指定连接
Server::sendByFlag([
// 数据
], 'user1');
// 发送给指定多个连接
Server::sendByFlag([
// 数据
], ['user1', 'user2', 'user3']);
// 指定服务名,支持监听多个子服务器的情况
Server::sendByFlag([
// 数据
], 'user1', 'myServer');
// SWOOLE_BASE 模式下只发送给当前 worker 进程中的连接
Server::sendByFlag([
// 数据
], 'user1', 'myServer', false);
sendRaw
发送数据给指定客户端,支持一个或多个(数组)
// 发送给当前连接
Server::sendRaw('数据');
// 发送给指定连接
Server::sendRaw('数据', 1);
// 发送给指定多个连接
Server::sendRaw('数据', [1, 2, 3]);
// 指定服务名,支持监听多个子服务器的情况
Server::sendRaw('数据', 1, 'myServer');
// SWOOLE_BASE 模式下只发送给当前 worker 进程中的连接
Server::sendRaw('数据', 1, 'myServer', false);
sendRawByFlag
发送数据给指定标记的客户端,支持一个或多个(数组)
// 需要有绑定过的连接,才可以使用此方法
\Imi\ConnectContext::bind('user1');
// 发送给当前连接
Server::sendRawByFlag('数据');
// 发送给指定连接
Server::sendRawByFlag('数据', 'user1');
// 发送给指定多个连接
Server::sendRawByFlag('数据', ['user1', 'user2', 'user3']);
// 指定服务名,支持监听多个子服务器的情况
Server::sendRawByFlag('数据', 'user1', 'myServer');
// SWOOLE_BASE 模式下只发送给当前 worker 进程中的连接
Server::sendRawByFlag('数据', 'user1', 'myServer', false);
sendToAll
发送数据给所有客户端
数据将会通过处理器编码
// 发送给所有连接
Server::sendToAll([
// 数据
]);
// 指定服务名,支持监听多个子服务器的情况
Server::sendToAll([
// 数据
], 'myServer');
// BASE模式下,只发送给当前 worker 中的所有连接(默认发给所有进程的连接)
Server::sendToAll([
// 数据
], 'myServer', false);
sendToAllRaw
发送数据给所有客户端
数据原样发送
// 发送给所有连接
Server::sendRawToAll('数据');
// 指定服务名,支持监听多个子服务器的情况
Server::sendRawToAll('数据', 'myServer');
// BASE模式下,只发送给当前 worker 中的所有连接(默认发给所有进程的连接)
Server::sendRawToAll('数据', 'myServer', false);
sendToGroup
发送数据给分组中的所有客户端,支持一个或多个(数组)
数据将会通过处理器编码
// 发送给单个分组
Server::sendToGroup('myGroupName', [
// 数据
]);
// 发送给多个分组
Server::sendToGroup(['myGroupName1', 'myGroupName2'], [
// 数据
]);
// 指定服务名,支持监听多个子服务器的情况
Server::sendToGroup('myGroupName', [
// 数据
], 'myServer');
// BASE模式下,只发送给当前 worker 中的所有连接(默认发给所有进程的连接)
Server::sendToGroup('myGroupName', [
// 数据
], 'myServer', false);
sendRawToGroup
发送数据给分组中的所有客户端,支持一个或多个(数组)
数据原样发送
// 发送
Server::sendRawToGroup('myGroupName', '数据');
// 发送给多个分组
Server::sendRawToGroup(['myGroupName1', 'myGroupName2'], '数据');
// 指定服务名,支持监听多个子服务器的情况
Server::sendRawToGroup('myGroupName', '数据', 'myServer');
// BASE模式下,只发送给当前 worker 中的所有连接(默认发给所有进程的连接)
Server::sendRawToGroup('myGroupName', '数据', 'myServer', false);
close
关闭一个或多个连接
Server::close(1); // 关闭 fd 1
Server::close([1, 2, 3]); // 关闭 fd 1、2、3
Server::close(1, 'myServer'); // 指定服务器名
// BASE模式下,只关闭当前 worker 中的连接(默认关闭所有进程的指定连接)
Server::close(1, 'myServer', false);
closeByFlag
关闭一个或多个指定标记的连接
// 需要有绑定过的连接,才可以使用此方法
\Imi\ConnectContext::bind('user1');
Server::closeByFlag('user1'); // 关闭 user1
Server::closeByFlag(['user1', 'user2']); // 关闭 user1、user2
Server::closeByFlag('user1', 'myServer'); // 指定服务器名
// BASE模式下,只关闭当前 worker 中的连接(默认关闭所有进程的指定连接)
Server::closeByFlag('user1', 'myServer', false);