jundayw/sockets 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

jundayw/sockets

Composer 安装命令:

composer require jundayw/sockets

包简介

Simple PHP native Socket.Supports Socket/HTTP/Websocket/SSL and other custom protocols.

README 文档

README

  • PHP 8.1 或更高版本
  • 安装了 Socket 扩展(通常在 PHP 默认安装中包含)

使用方法

  • 命令行下, 执行 composer 命令安装:
composer require jundayw/sockets

Socket 协议

Server.php

$server = new Server(
    '0.0.0.0',
    8080,
    AF_INET,
    SOCK_STREAM,
    SOL_TCP
);
$server->setEnableLogging();
$server->setMaxClients(1);

$server->on("connection", function (ConnectionContract $connection) {
    var_dump("connection");
    // var_dump(func_get_args());
});
$server->on("receive", function (ConnectionContract $connection, $data) use ($server) {
    var_dump("receive(hex):", bin2hex($data));
    var_dump("receive(raw):", $data);
    $server->send($connection->getSocket(), $data);
    // var_dump(func_get_args());
});
$server->on("disconnection", function (ConnectionContract $connection, int $errorCode, string $errorMessage) {
    var_dump("disconnection");
    // var_dump(func_get_args());
});

$server->on("error", function (Socket $socket, ?array $phpError, string $errorMessage, int $errorCode) {
    var_dump("error");
    // var_dump(func_get_args());
});

$server->start();

Client.php

$socket = new Client(
    AF_INET,
    SOCK_STREAM,
    SOL_TCP
);

$socket->setEnableLogging();

$socket->connect('127.0.0.1', 8080);

$socket->send($socket->getSocket(), 'data');

echo $socket->recv($socket->getSocket(), $socket->getBufferSize());

$socket->close();

Http 协议

HttpServer.php

// @todo

HttpClient.php

// @todo

WebSocket 协议

WebSocketServer.php

$server = new Server(
    '0.0.0.0',
    8080,
    AF_INET,
    SOCK_STREAM,
    SOL_TCP
);
$server->setEnableLogging();
$server->setMaxClients(10);

$server->on("connection", function (ConnectionContract $connection) {
    var_dump("connection");
    // var_dump(func_get_args());
});
//$server->on("handshake", function (ConnectionContract $connection) use ($server) {
//    $server->processClientHandshake($connection);
//    var_dump("handshake");
//    // var_dump(func_get_args());
//});
$server->on("message", function (ConnectionContract $connection, $data, WebSocket $frame) use ($server) {
    var_dump("message:", $data);
    $server->push($connection, $frame->getPayloadData());
    // var_dump(func_get_args());
});
$server->on("binary", function (ConnectionContract $connection, $data, WebSocket $frame) use ($server) {
    var_dump("binary:", $data);
    $server->push($connection, $frame->getPayloadData());
    // var_dump(func_get_args());
});
$server->on("ping", function (ConnectionContract $connection, $data, WebSocket $frame) use ($server) {
    var_dump("ping:", $data);
    $server->pong($connection);
    // var_dump(func_get_args());
});
$server->on("disconnection", function (ConnectionContract $connection, int $errorCode, string $errorMessage) {
    var_dump("disconnection");
    // var_dump(func_get_args());
});

$server->on("error", function (Socket $socket, ?array $phpError, string $errorMessage, int $errorCode) {
    var_dump("error");
    // var_dump(func_get_args());
});

$server->start();

WebSocketClient.php

$socket = new Client(
    AF_INET,
    SOCK_STREAM,
    SOL_TCP
);

$socket->setEnableLogging();

$socket->connect('127.0.0.1', 8080);

$socket->push($socket->getSocket(), 'bye', 0x8, true);
//$socket->ping($socket->getSocket());

echo $socket->recv($socket->getSocket(), $socket->getBufferSize());

$socket->close();

jundayw/sockets 适用场景与选型建议

jundayw/sockets 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 05 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 jundayw/sockets 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 jundayw/sockets 我们能提供哪些服务?
定制开发 / 二次开发

基于 jundayw/sockets 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-05-27