webbeta / socket
构建基于事件驱动的socket服务器的库。
v0.4.2
2014-05-25 17:02 UTC
Requires
- php: >=5.4.0
- evenement/evenement: ~2.0
- react/event-loop: 0.4.*
- react/stream: 0.4.*
README
构建基于事件驱动的socket服务器的库。
socket组件提供了基于EventLoop和Stream组件的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();