icicleio/http

Icicle 的异步 HTTP 组件。

v0.3.0 2016-03-08 23:37 UTC

This package is auto-updated.

Last update: 2024-09-14 03:21:21 UTC


README

异步、非阻塞的 HTTP/1.1 客户端和服务器。

这个库是 Icicle 的一个组件,它提供了 HTTP/1.1 服务器和客户端实现。像其他 Icicle 组件一样,这个库使用由 协程可等待对象 以及 生成器 构建而成的协程,使得编写异步代码更类似于编写同步代码。

Build Status Coverage Status Semantic Version MIT License @icicleio on Twitter

文档和支持

要求
  • PHP 5.5+(v0.3.x 分支,当前稳定版)和 v1.x 分支(镜像当前稳定版)
  • PHP 7(v2.0 master 分支)支持生成器委派和返回表达式
建议
  • openssl 扩展:创建 HTTPS 服务器或通过 HTTPS 发送请求时必需。
安装

推荐的安装方式是使用 Composer 包管理器。(有关安装和使用的更多信息,请参阅 Composer 安装指南。)

运行以下命令以在项目中使用此库

composer require icicleio/http

您也可以手动编辑 composer.json,将此库添加为项目依赖项。

// composer.json
{
    "require": {
        "icicleio/http": "^0.3"
    }
}

示例

以下示例创建了一个简单的 HTTP 服务器,对每个请求都返回 Hello, world!

#!/usr/bin/env php
<?php

require '/vendor/autoload.php';

use Icicle\Http\Message\{BasicResponse, Request, Response};
use Icicle\Http\Server\{RequestHandler, Server};
use Icicle\Socket\Socket;
use Icicle\Loop;

$server = new Server(new class implements RequestHandler {
    public function onRequest(Request $request, Socket $socket)
    {
        $response = new BasicResponse(Response::OK, [
            'Content-Type' => 'text/plain',
        ]);
        
        yield from $response->getBody()->end('Hello, world!');
        
        yield $response;
    }
    
    public function onError($code, Socket $socket)
    {
        return new BasicResponse($code);
    }
});

$server->listen(8080);

Loop\run();