Skip to content

Releases: cloudtay/ripple

v0.7

12 Oct 10:42
Compare
Choose a tag to compare

更新内容

  • 启用新包名 cloudtay/ripple 取代 cclilshy/p-ripple-core
  • Stream对象新增 waitForRead/Write() 方法
  • 针对HTTP服务端性能优化
  • 修复部分已知问题

v0.6.5

10 Oct 09:05
e322cf4
Compare
Choose a tag to compare

更新内容

HTTP服务端支持读写双全工模式
HTTP服务端移除Symfony标准
优化Tunnel的SSL签名SNI校准
新增协程Suspension对象
新增协程Container
修复部分已知问题

v0.6

29 Sep 14:05
cdb1065
Compare
Choose a tag to compare

更新内容

  • 减少规范冗余的Promise层数
  • HTTP服务器删除流事务
  • 提供更多的测试例子
  • 泛异常范围缩小
  • 提供根语法糖
  • 强制最大运行时间为无限
  • 强调同步非阻塞
  • 新的长文本写入模式

v0.5.4

23 Sep 03:59
07fb686
Compare
Choose a tag to compare

更新内容

  • 修复部分已知问题

v0.5.2

04 Sep 08:39
2ec0345
Compare
Choose a tag to compare

更新内容

  • 特性 HTTP服务新增对SSE响应的支持
  • 修复 Libevent在大字节传输时,部分系统可能出现事件丢失的问题
  • 特性 HTTP客户端支持请求/响应流捕获,并内置SSE请求支持

option使用参数capture_readcapture_write

'capture_read'  => static function (string $content,Closure $read) {
    // TODO: 做任何事

    // 放行内容
    return $read($content);
};
  • 重要改动 解除对posixpcntl扩展的强制依赖

未启用pcntl扩展与posix扩展的环境下使用 Process::run()
会得到一个模拟子进程运行的抽象Runtime, 与多进程运行时表现一致
但实际该Runtime的生命周期与主进程一致,当killRuntime时, 等于kill主进程
该更新使得Windows在单进程环境依然能进行模拟多进程运行时的开发

新特性 (Server-Sent-Events) 用法

服务端部分

use Co\Net;
use Co\Plugin;
use Psc\Core\Http\Client\Capture\ServerSentEvents;
use Psc\Core\Http\Server\Chunk;
use Psc\Core\Http\Server\Request;
use Psc\Core\Http\Server\Response;

$server = Net::Http()->server('http://127.0.0.1:8008/');
$server->onRequest(static function (Request $request, Response $response) {
    // 设置请求头
    $response->headers->set('Content-Type', 'text/event-stream');

    // 创建生成器
    $generator = static function () {
        for ($i = 0; $i < 10; $i++) {
            // 使用分段助手进行事件分段
            yield Chunk::event('hello', 'test', \strval($i));
            \Co\sleep(0.1);
        }
        yield '';
    };

    // 将生成器设置为body部分
    $response->setContent($generator());
    $response->respond();
});
$server->listen();

客户端部分

use Co\Net;
use Co\Plugin;
use Psc\Core\Http\Client\Capture\ServerSentEvents;
use Psc\Core\Http\Server\Chunk;
use Psc\Core\Http\Server\Request;
use Psc\Core\Http\Server\Response;

# 创建SSE解析器
$capture = new ServerSentEvents();

# 定义SSE事件处理器
$capture->onEvent(function (array $event) {
    \var_dump($event);
});

# 从解析器中取出写拦截器(抓包器)
$writeHandler = $capture->getWriteCapture();

# 从解析器中取出读拦截器(抓包器)
$readHandler = $capture->getReadCapture();


$response = $guzzleClient->get('http://127.0.0.1:8008/', [
    'headers'       => [
        'Accept' => 'text/event-stream',
        'Content-Type' => 'text/event-stream',
    ],

    # 请求注入抓包器
    'capture_write' => $capture->getWriteCapture(),
    'capture_read'  => $capture->getReadCapture(),
]);

v0.5.1

31 Aug 08:24
83a6bd6
Compare
Choose a tag to compare

更新说明

  • 使用Co命名空间取代P并在doc中声明弃用

将保留P命名空间至v1.0发布版本之前

  • HTTP客户端 支持http/socks代理
  • HTTP客户端 同步GuzzleException接口
  • HTTP客户端 公开连接池的管理API
\Co\Plugin::Guzzle()->getHttpClient();
\Co\Plugin::Guzzle()->getHttpClient()->getConnectionPool();
  • Websocket服务端 支持onRequest方法
  • Websocket服务端 支持Gzip压缩 @lidongyooo #21
  • 单元测试 新增Http与Weboscket模块的内存安全单元测试
  • 新增对Windows的支持 (不稳定阶段)

不兼容更新

以下方法将不再返回GuzzleHttp\Client对象

\Co\Plugin::Guzzle();

请通过以下API获取

\Co\Plugin::Guzzle()->newClient(array|null $config = []) : Client;

v0.4.6

27 Aug 15:31
174eaf3
Compare
Choose a tag to compare

更新内容

WebSocket服务器:支持更多选项以使用底层的心跳机制 @lidongyooo in #19
File模块:扩展文件监听动态调整
Worker模块:优化工作进程资源释放机制
HTTP客户端:支持处理分块传输编码
HTTP客户端:长连接支持底层心跳
HTTP客户端:修复连接池事件冲突

v0.3.4

14 Aug 13:12
Compare
Choose a tag to compare

修复若干问题:

  • 子进程无法在非异步上下文自动
  • 工具: Output的输出流改为STDOUT
  • HTTP服务: 长连接请求回传Connection字段
  • HTTP客户端: 非GET请求content-length自动填充
  • HTTP客户端: 取path可能忽略query部分

更新:

  • 多线程模块: 新增基于zts+parallel的Actor模型多线程模块
  • HTTP客户端: 自动解决连接池
  • HTTP服务端: 支持多文件混合表单提交
  • 质量: 简化命名空间层级,不影响Facades用法
  • 驱动: 支持Laravel@CSRF验证文件/表单