webbeta/socket

构建基于事件驱动的socket服务器的库。

v0.4.2 2014-05-25 17:02 UTC

README

Build Status

构建基于事件驱动的socket服务器的库。

socket组件提供了基于EventLoopStream组件的socket层服务器或客户端的更易用的接口。

服务器

服务器可以监听端口,并且每当客户端连接时都会触发一个connection事件。

连接

连接是一个可读和可写的流,可以在服务器或客户端环境中使用。

用法

以下是一个服务器示例,如果您向它发送任何内容,它将关闭连接。

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

    $socket = new React\Socket\Server($loop);
    $socket->on('connection', function ($conn) {
        $conn->write("Hello there!\n");
        $conn->write("Welcome to this amazing server!\n");
        $conn->write("Here's a tip: don't say anything.\n");

        $conn->on('data', function ($data) use ($conn) {
            $conn->close();
        });
    });
    $socket->listen(1337);

    $loop->run();

您可以通过向listen方法提供一个第二个参数来更改socket监听的宿主。

    $socket->listen(1337, '192.168.0.1');

以下是一个客户端示例,它将输出上述服务器的输出,然后尝试向它发送一个字符串。

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

    $client = stream_socket_client('tcp://127.0.0.1:1337');
    $conn = new React\Socket\Connection($client, $loop);
    $conn->pipe(new React\Stream\Stream(STDOUT, $loop));
    $conn->write("Hello World!\n");

    $loop->run();