react/stomp

React的STOMP绑定。

v0.2.0 2014-11-29 17:12 UTC

This package is auto-updated.

Last update: 2024-08-25 13:49:39 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 header设置为'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。

资源