imedge/protocol-netstring

为 AMPHP 实现的异步 NetString

v0.4.0 2024-07-10 17:48 UTC

This package is auto-updated.

Last update: 2024-09-26 12:52:43 UTC


README

此库实现了 NetString 协议,并为 AMPHP 提供了 NetStringReaderNetStringWriter 和双向 NetStringConnection 实现。

Coding Standards Unit Tests Static Analysis PHPStan Level 9 Minimum PHP Version: 8.1 License: MIT Version

安装

此软件包可以作为 Composer 依赖项在 PHP 8.1 及更高版本上安装。

composer require imedge/protocol-netstring

用法

NetStringReader

示例代码

<?php

use Amp\ByteStream\ReadableBuffer;
use IMEdge\Protocol\NetString\NetStringReader;

$netString = new NetStringReader(new ReadableBuffer('5:Hello,6:world!,'));
foreach ($netString->packets() as $packet) {
    var_dump($packet);
}

输出

string(5) "Hello"
string(6) "world!"

NetStringWriter

示例代码

<?php

use Amp\ByteStream\WritableBuffer;
use IMEdge\Protocol\NetString\NetStringWriter;

$netString = new NetStringWriter($out = new WritableBuffer());
$netString->write('Hello');
$netString->write(' ');
$netString->write('World!');
$netString->close();
var_dump($out->buffer());

输出

string(21) "5:Hello,1: ,6:World!,"

NetStringConnection

NetStringConnection 允许双向 NetString 通信。

示例代码

<?php

use Amp\ByteStream\ReadableBuffer;
use Amp\ByteStream\WritableBuffer;
use IMEdge\Protocol\NetString\NetStringConnection;

$netString = new NetStringConnection(new ReadableBuffer('5:Hello,6:world!,'), $out = new WritableBuffer());
$netString->write('Hi!');
foreach ($netString->packets() as $packet) {
    var_dump($packet);
}
$out->close();
var_dump($out->buffer());

输出

string(5) "Hello"
string(6) "world!"
string(6) "3:Hi!"