Network News Transfer Protocol (NNTP) bindings for React.

dev-master / 0.1.x-dev 2014-01-10 17:56 UTC

This package is auto-updated.

Last update: 2022-06-29 00:51:36 UTC


Network News Transfer Protocol (NNTP) bindings for React. This component builds on top of the SocketClient component to implement NNTP.

Latest Stable Version Total Downloads Latest Unstable Version Build Status Coverage Status SensioLabsInsight


The recommended way to install react-nntp is through composer.

    "require": {
        "rvdv/react-nntp": "1.0.*@dev"

Basic Usage

Here is a simple example that fetches the first 100 articles from the 'php.doc' newsgroup of the PHP mailing list.

use React\Dns\Resolver\Factory as ResolverFactory;
use React\EventLoop\Factory as EventLoopFactory;
use Rvdv\React\Nntp\Client;
use Rvdv\React\Nntp\Command\CommandInterface;
use Rvdv\React\Nntp\Response\ResponseInterface;

$loop = EventLoopFactory::create();

$dnsResolverFactory = new ResolverFactory();
$dns = $dnsResolverFactory->createCached('', $loop);

$client = Client::factory($loop, $dns);

$group = null;
$format = null;

    ->connect('news.php.net', 119)
    ->then(function (ResponseInterface $response) use ($client) {
        return $client->overviewFormat();
    ->then(function (CommandInterface $command) use (&$format, $client) {
        $format = $command->getResult();

        return $client->group('php.doc');
    ->then(function (CommandInterface $command) use (&$group, &$format, $client) {
        $group = $command->getResult();

        return $client->overview($group->getFirst() . '-' . ($group->getFirst() + 99), $format);
    ->then(function (CommandInterface $command) use ($client) {
        $articles = $command->getResult();
        // Process the articles further.




To run the test suite, you need PHPUnit.

$ phpunit


You can also use the configured Vagrant VM for local development. Move into the /vagrant directory and run the following commands;

# Resolve the Puppet dependencies through librarian-puppet.
$ gem install librarian-puppet
$ librarian-puppet install

$ vagrant up