YurunHttp v3.2.0,新增支持 WebSocket Client

YurunHttp 是開源的 PHP HTTP 類庫,支持鏈式操做,簡單易用。php

支持全部常見的 GET、POST、PUT、DELETE、UPDATE 等請求方式,支持上傳下載、設置和讀取 header、Cookie、請求參數、失敗重試、限速、代理、證書等。html

3.0 版完美支持Curl、Swoole 協程;3.2 版支持 Swoole WebSocket 客戶端。git

API 文檔:https://apidoc.gitee.com/yuru...github

Gitee:https://gitee.com/yurunsoft/Y...web

Github:https://github.com/Yurunsoft/...json

git倉庫中examples目錄裏是示例代碼!api

QQ羣交流:17916227 點擊加羣websocket

更新日誌(v3.2.0):

  • 新增 WebSocket Client 支持

WebSocket Client 僅限用於 Swoole 協程環境。cookie

YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class);
go(function(){
    $url = 'ws://127.0.0.1:1234/';
    $http = new HttpRequest;
    $client = $http->websocket($url);
    if(!$client->isConnected())
    {
        throw new \RuntimeException('Connect failed');
    }
    $client->send('data');
    $recv = $client->recv();
    var_dump('recv:', $recv);
    $client->close();
});

Composer

本項目能夠使用composer安裝,遵循psr-4自動加載規則,在你的 composer.json 中加入下面的內容composer

{
    "require": {
        "yurunsoft/yurun-http": "~3.1"
    }
}

而後執行 composer update 安裝。

以後你即可以使用 include "vendor/autoload.php"; 來自動加載類。(ps:不要忘了namespace)

用法

簡單調用

<?php
use Yurun\Util\HttpRequest;

$http = new HttpRequest;
$response = $http->ua('YurunHttp')
                 ->get('http://www.baidu.com');

echo 'html:', PHP_EOL, $response->body();

PSR-7 請求構建

<?php
use Yurun\Util\YurunHttp\Http\Request;
use Yurun\Util\YurunHttp;

$url = 'http://www.baidu.com';

// 構造方法定義:__construct($uri = null, array $headers = [], $body = '', $method = RequestMethod::GET, $version = '1.1', array $server = [], array $cookies = [], array $files = [])
$request = new Request($url);

// 發送請求並獲取結果
$response = YurunHttp::send($request);

var_dump($response);

Swoole 協程模式

<?php
use Yurun\Util\YurunHttp;
use Yurun\Util\HttpRequest;

// 設置默認請求處理器爲 Swoole
YurunHttp::setDefaultHandler('Yurun\Util\YurunHttp\Handler\Swoole'); // php 5.4
// YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); // php 5.5+

// Swoole 處理器必須在協程中調用
go('test');

function test()
{
    $http = new HttpRequest;
    $response = $http->get('http://www.baidu.com');
    echo 'html:', PHP_EOL, $response->body();
}

WebSocket Client

YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class);
go(function(){
    $url = 'ws://127.0.0.1:1234/';
    $http = new HttpRequest;
    $client = $http->websocket($url);
    if(!$client->isConnected())
    {
        throw new \RuntimeException('Connect failed');
    }
    $client->send('data');
    $recv = $client->recv();
    var_dump('recv:', $recv);
    $client->close();
});

具體詳見examples目錄中的示例代碼

相關文章
相關標籤/搜索