dmamontov/stomp

此包已被弃用且不再维护。未建议替代包。

React 的 STOMP 绑定。

1.0.0 2019-09-13 06:57 UTC

This package is auto-updated.

Last update: 2020-03-13 08:57:16 UTC


README

React 的 STOMP 绑定。

STOMP 是一种消息协议。它被大多数消息队列代理所支持,例如 RabbitMQApollo 和许多其他。

消息队列用于异步进程间通信。这对于工作者、常规的长运行任务,或者长运行守护进程之间的通信非常有用。

Build Status Code Climate

安装

安装 react/stomp 的推荐方式是通过 composer

{
    "require": {
        "react/stomp": "0.1.*"
    }
}

示例

您可以使用 React\Stomp\Client 与 STOMP 服务器进行交互。

<?php

$loop = React\EventLoop\Factory::create();
$factory = new React\Stomp\Factory($loop);
$client = $factory->createClient(array('vhost' => '/', 'login' => 'guest', 'passcode' => 'guest'));

$client
    ->connect()
    ->then(function ($client) use ($loop) {
        $client->subscribe('/topic/foo', function ($frame) {
            echo "Message received: {$frame->body}\n";
        });

        $loop->addPeriodicTimer(1, function () use ($client) {
            $client->send('/topic/foo', 'le message');
        });
    });

$loop->run();

选项

  • host: 连接的主机,默认为 127.0.0.1
  • port: 连接的端口,默认为 61613(RabbitMQ 的 STOMP 插件)。
  • vhost: 虚拟主机,默认为 /
  • login: 登录用户名,默认为 guest
  • passcode: 登录密码,默认为 guest

确认

使用 subscribe 方法订阅时,消息在服务器发送后立即视为已确认(ack 标头设置为 'auto')。

您可以使用 subscribeWithAck 进行手动确认订阅(请参阅 STOMP 规范中的 SUBSCRIBE 了解可用的 ack 模式值)。

您将在回调的第二参数中获得一个 React\Stomp\AckResolver,以确认或取消确认消息。

$client->subscribeWithAck('/topic/foo', 'client', function ($frame, $ackResolver) {
    if ($problem) {
        $ackResolver->nack();
    } else {
        $ackResolver->ack();
    }
});

待办事项

  • 支持帧体中的空字节
  • 心跳
  • 消费 ACK
  • 事务
  • 流式传输帧体(使用流 API)

测试

要运行测试套件,您需要 PHPUnit。

$ phpunit

许可证

MIT,请参阅 LICENSE。

资源