aksalj/rsocket

基于 ReactPHP 和 RxPHP 的 RSocket PHP SDK

0.1.1 2020-02-22 00:00 UTC

This package is not auto-updated.

Last update: 2024-09-27 19:19:35 UTC


README

Composer

基于 ReactPHP 和 RxPHP 的 RSocket PHP SDK。

需求

  • PHP 7.4.x

示例

RSocket 客户端

Scheduler::setDefaultFactory(function () use ($loop) {
    return new Scheduler\EventLoopScheduler($loop);
});

$rsocketPromise = RSocketConnector::create($loop)->connect("tcp://127.0.0.1:42252");

$rsocketPromise->then(function (RSocket $rsocket) {
    $observablePayload = $rsocket->requestResponse(Payload::fromText("text/plain", "Ping"));
    $observablePayload->subscribe(
        function (Payload $x) {
            echo 'Result: ' . $x->getDataUtf8();
        }
    );
});

RSocket 服务器

Scheduler::setDefaultFactory(function () use ($loop) {
    return new Scheduler\EventLoopScheduler($loop);
});

$listenUri = "tcp://127.0.0.1:42252";
$socketAcceptor = CallableSocketAcceptor::handle(function ($setupPayload, $sendingRSocket) {
    return AbstractRSocket::requestResponseHandler(function ($payload) {
        return Observable::of(Payload::fromText("metadata", "PONG"));
    });
});
$server = RSocketServer::create($loop, $socketAcceptor)->bind($listenUri);
print("RSocket Server started on ${listenUri}");

RSocket 服务存根和路由

请检查 https://github.com/aksalj/rsocket-php/tree/master/tests/route

RSocket

  • 操作
    • REQUEST_FNF
    • REQUEST_RESPONSE
    • REQUEST_STREAM
    • REQUEST_CHANNEL
    • METADATA_PUSH
  • 更多操作
    • 错误
    • 取消
    • 心跳
  • 服务质量(QoS)
    • 请求N
    • 租约
  • 传输
    • TCP
    • WebSocket
  • 高级API
    • 客户端
    • 服务器
  • 其他
    • RxPHP

参考