Skip to content

friends-of-reactphp/zmq

Repository files navigation

React/ZMQ

ZeroMQ bindings for React.

Build Status

Install

The recommended way to install react/zmq is through composer.

composer require react/zmq

Example

And don't forget to autoload:

<?php
require 'vendor/autoload.php';

Here is an example of a push socket:

<?php

$loop = React\EventLoop\Factory::create();

$context = new React\ZMQ\Context($loop);

$push = $context->getSocket(ZMQ::SOCKET_PUSH);
$push->connect('tcp://127.0.0.1:5555');

$i = 0;
$loop->addPeriodicTimer(1, function () use (&$i, $push) {
    $i++;
    echo "sending $i\n";
    $push->send($i);
});

$loop->run();

And the pull socket that goes with it:

<?php

$loop = React\EventLoop\Factory::create();

$context = new React\ZMQ\Context($loop);

$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555');

$pull->on('error', function ($e) {
    var_dump($e->getMessage());
});

$pull->on('message', function ($msg) {
    echo "Received: $msg\n";
});

$loop->run();

Todo

  • Integration tests
  • Buffer limiting
  • Do not push messages if no listener

Tests

To run the test suite, you need PHPUnit.

$ phpunit

License

MIT, see LICENSE.