定制 kim1ne/socket-server 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kim1ne/socket-server

最新稳定版本:1.1.0

Composer 安装命令:

composer require kim1ne/socket-server

包简介

README 文档

README

This package can be installed as a Composer dependency.

composer require kim1ne/socket-server

The library uses libraries of the ReactPHP for async. Stream locks

Supported protocols

Usage

Create server and run

use Kim1ne\InputMessage;
use Kim1ne\Socket\Server\Connection;
use Kim1ne\Socket\Message;
use Kim1ne\Socket\Server\Server;
use Kim1ne\Socket\Server\Transport;

$server = new Server(transport: Transport::WS, port: 2346);

$server->on('connection', function (Connection $connection, Server $server) {
    InputMessage::green('Connected!')
});

$server->on('message', function (Message $message, Connection $connection, Server $server) {
    InputMessage::green("I've got the message!");
});

$server->on('close', function (Server $server) {
    InputMessage::green('Disconnected')
});

$server->on('error', function (\Throwable $throwable) {
    InputMessage::red('Error: ' . $throwable->getMessage());
});

$server->run();

Example: create server TLS/WSS

use Kim1ne\Socket\Server\Server;
use Kim1ne\Socket\Server\Transport;

$server = new Server(transport: Transport::TLS, port: 2346, serverContext: [
        "ssl" => [
        "local_cert" => "./certs/server.crt",
        "local_pk" => "./certs/server.key",
        "verify_peer" => false,
        "crypto_method" => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER | STREAM_CRYPTO_METHOD_TLSv1_3_SERVER,
        "disable_compression" => true,
    ]
]);

Send message to all connected

/**
 * @var \Kim1ne\Socket\Server\Server $server 
 */
$server->sendAll('{message: "The message to all"}');

Send message to selected

use Kim1ne\Socket\Server\Connection;

$server->sendChoice('{message: "The message to selected"}', function (Connection $connection) {
    return (int) $connection->get('user_id') === 1;
});

Set property for connection

the object \Kim1ne\Socket\Server\Connection supports dynamic properties

use Kim1ne\Socket\Server\Connection;
use Kim1ne\Socket\Message;
use Kim1ne\Socket\Server\Server;

/**
 * @var \Kim1ne\Socket\Server\Server $server 
 */
$server->on('message', function (Message $message, Connection $connection, Server $server) {
    $message = $message->getDecodeJson();
    
    if ($message['type'] === 'auth') {
        $userId = $message['user_id'];
        $connection->set('user_id', $userId);
    }
})

统计信息

  • 总下载量: 15
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2025-01-06