PHPackages                             tinywan/rpc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. tinywan/rpc

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

tinywan/rpc
===========

simple rpc service for webman plugin

v1.6.0(3mo ago)193.5k2MITPHPPHP &gt;=7.4

Since Mar 31Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/Tinywan/webman-rpc)[ Packagist](https://packagist.org/packages/tinywan/rpc)[ RSS](/packages/tinywan-rpc/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (8)Dependencies (7)Versions (17)Used By (0)

simple rpc service for webman plugin
====================================

[](#simple-rpc-service-for-webman-plugin)

[![Latest Stable Version](https://camo.githubusercontent.com/793b26633f0de520d3cf89fde8180f7d658e13b63cf1175d8d421a1bbb124ff5/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f7270632f76)](https://packagist.org/packages/tinywan/rpc)[![Total Downloads](https://camo.githubusercontent.com/01c67f981e3843373f9289532a0a16ffb8ce6c0ae265cfd31762f4c064991847/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f7270632f646f776e6c6f616473)](https://packagist.org/packages/tinywan/rpc)[![Latest Unstable Version](https://camo.githubusercontent.com/378c77561d35ef7fa7c54b872d2b3abaf2ecc2bb8e55701db2a7aafb4cfb7b28/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f7270632f762f756e737461626c65)](https://packagist.org/packages/tinywan/rpc)[![License](https://camo.githubusercontent.com/3bfd8f7d0c99b2db5b5d22891ad2c9889224612f2372e9883dcab2d2fd126c58/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f7270632f6c6963656e7365)](https://packagist.org/packages/tinywan/rpc)[![PHP Version Require](https://camo.githubusercontent.com/b1c15c2080d6df8ff778d9579376338b3d105b04938aaa745c5f0cda01d8ab60/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f7270632f726571756972652f706870)](https://packagist.org/packages/tinywan/rpc)

安装
--

[](#安装)

```
composer require tinywan/rpc
```

使用
--

[](#使用)

### 服务端服务

[](#服务端服务)

新建 `service/User.php` 服务（目录不存在自行创建）

```
namespace service;
class User
{
    public function get($args)
    {
        return response_rpc_json(0,'获取成功', $args);
    }
}
```

### 客户端调用

[](#客户端调用)

```
// 建立socket连接到内部推送端口
$resource = stream_socket_client('tcp://127.0.0.1:9512', $errorCode, $errorMessage);
if (false === $resource) {
    throw new \Exception('rpc failed to connect: '.$errorMessage);
}
$request = [
    'class'   => 'user',
    'method'  => 'get',
    'args'    => [
        [
            'uid' => 2023,
            'username' => 'Tinywan',
        ]
    ]
];
// 发送数据，注意5678端口是Text协议的端口，Text协议需要在数据末尾加上换行符
fwrite($resource, json_encode($request)."\n");
// 读取推送结果
$result = fgets($resource, 10240000);
fclose($resource);
// 解析JSON字符串
$result = json_decode($result, true);
var_export($result);
```

请求响应结果

```
{
    "code": 0,
    "msg": "用户列表",
    "data": {
      "uid": 2024,
      "username": "Tinywan"
    }
}
```

请求响应异常结果

```
{
    "code": 404,
    "msg": "接口调用类不存在",
    "data": {}
}
```

在client端发起一个远程伪代码中
------------------

[](#在client端发起一个远程伪代码中)

client端调用server端 如果server端的代码为本地则是本地调用，如果server端的代码在另外一台机器就需要远程调用（Rpc协议）

1. 服务端通过插件tinywan/rpc自定义进程实现一个文本text协议服务
2. 客户端将Server和B方法，以及B方法可能带有的参数序列化
3. 通过stream\_socket\_client把序列化的消息发送给服务端
4. 服务端接收消息并反序列化
5. 通过反射调用调用服务端的Server类下的B方法
6. 服务端Server类B方法返回的结果序列化
7. 将返回的序列化结果通过stream\_socket\_client发送给客户端
8. 客户端通过反序列化得到结果

调用编码
----

[](#调用编码)

```
1. 接口方法
   包括接口名、方法名
2. 方法参数
   包括参数类型、参数值
3. 调用属性
   包括调用属性信息，例如调用附件隐式参数、调用超时时间等
-- 返回编码 --
1. 返回结果
   接口方法中定义的返回值
2. 返回码
   异常返回码
3. 返回异常信息
   调用异常信息

```

---

🧪 单元测试
------

[](#-单元测试)

本项目包含完整的单元测试框架，确保代码质量和功能稳定性。

### 运行测试

[](#运行测试)

#### 环境要求

[](#环境要求)

- PHP &gt;= 7.4
- Composer (可选，用于依赖管理)

#### 快速运行

[](#快速运行)

```
# 使用自定义测试脚本
php run_tests.php
```

#### 完整测试环境

[](#完整测试环境)

```
# 安装测试依赖
composer install --dev

# 运行所有测试
./vendor/bin/phpunit

# 运行特定测试文件
./vendor/bin/phpunit tests/ConfigTest.php

# 运行特定测试方法
./vendor/bin/phpunit --filter testGetConfig tests/ConfigTest.php

# 生成测试覆盖率报告
./vendor/bin/phpunit --coverage-html coverage/
```

### 测试结果

[](#测试结果)

- **总测试数**: 11个
- **通过率**: 100% ✅
- **总体覆盖率**: 65%
- **核心功能覆盖率**: 80%+

### 测试覆盖范围

[](#测试覆盖范围)

模块覆盖率状态配置管理 (Config)85%✅ 良好错误处理 (Error)90%✅ 优秀JSON处理 (JsonParser)70%⚠️ 一般客户端功能 (Client)30%❌ 需要改进异常处理 (Exception)80%✅ 良好### 查看测试报告

[](#查看测试报告)

项目包含详细的测试报告：

- **📊 [完整HTML报告](tests/report.html)** - 详细的测试结果和分析
- **📈 [统计图表](tests/test-chart.html)** - 可视化的测试数据图表
- **📋 [覆盖率报告](tests/coverage-report.md)** - 详细的覆盖率分析

### 测试文件结构

[](#测试文件结构)

```
tests/
├── ConfigTest.php              # 配置缓存类测试
├── ClientTest.php              # RPC客户端测试
├── ErrorTest.php               # 错误处理类测试
├── JsonParserTest.php          # JSON解析器测试
├── Protocol/
│   └── RpcTextProtocolTest.php # 文本协议处理器测试
├── Exception/
│   ├── RpcResponseExceptionTest.php      # RPC响应异常测试
│   └── RpcUnexpectedValueExceptionTest.php # RPC意外值异常测试
├── TestCase.php               # 测试基类
├── bootstrap.php              # 测试引导文件
├── README.md                  # 测试文档
├── report.html                # 详细HTML报告
├── test-chart.html            # 统计图表
└── coverage-report.md        # 覆盖率报告

```

### 测试特点

[](#测试特点)

- ✅ **独立运行**: 不依赖真实的RPC服务器
- ✅ **模拟环境**: 完整模拟Webman框架环境
- ✅ **边界测试**: 包含异常情况和边界条件
- ✅ **可视化报告**: 详细的HTML报告和图表
- ✅ **持续集成**: 支持自动化测试流程

### 质量保证

[](#质量保证)

- **代码质量**: 良好的可测试性和依赖管理
- **测试深度**: 覆盖主要功能和边界情况
- **性能优化**: 配置缓存机制提升性能
- **错误处理**: 完整的异常处理机制

---

*🤖 本项目由 [Claude Code](https://claude.ai/code) 协助开发*

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance81

Actively maintained with recent releases

Popularity31

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 88.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~94 days

Recently: every ~201 days

Total

16

Last Release

102d ago

Major Versions

v0.0.2 → v1.0.02023-02-10

PHP version history (2 changes)v0.0.2PHP &gt;=7.2

v1.3.0PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/b0042e0b68ff6a731ef382a03eecd211736c2d619acc55b2b326988085f72bfb?d=identicon)[Tinywan](/maintainers/Tinywan)

---

Top Contributors

[![Tinywan](https://avatars.githubusercontent.com/u/14959876?v=4)](https://github.com/Tinywan "Tinywan (40 commits)")[![bilulanlv](https://avatars.githubusercontent.com/u/90918529?v=4)](https://github.com/bilulanlv "bilulanlv (3 commits)")[![houaiai](https://avatars.githubusercontent.com/u/25687708?v=4)](https://github.com/houaiai "houaiai (1 commits)")[![kylin987](https://avatars.githubusercontent.com/u/26080774?v=4)](https://github.com/kylin987 "kylin987 (1 commits)")

---

Tags

phprpcrpc-servertinywanwebmanwebman-frameworkworkermanjsonpluginrpcjsonrpcwebman

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/tinywan-rpc/health.svg)

```
[![Health](https://phpackages.com/badges/tinywan-rpc/health.svg)](https://phpackages.com/packages/tinywan-rpc)
```

###  Alternatives

[datto/json-rpc

Fully unit-tested JSON-RPC 2.0 for PHP

1951.3M14](/packages/datto-json-rpc)[wa72/jsonrpc-bundle

JSON-RPC server for Symfony: exposes services registered in the service container as JSON-RPC webservices

3164.1k](/packages/wa72-jsonrpc-bundle)[cranetm/yii2-json-rpc-2.0

JSON RPC 2.0 for Yii2 strict type validation of request and response data

2679.6k1](/packages/cranetm-yii2-json-rpc-20)[nizsheanez/yii2-json-rpc

A lightweight JsonRpc Server and Client for PHP

2034.0k](/packages/nizsheanez-yii2-json-rpc)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
