public function setUp() { $this->loop = React\EventLoop\Factory::create(); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dns = $dnsResolverFactory->createCached('8.8.8.8', $this->loop); $this->factory = new Factory($this->loop, $dns); }
private function getData($message) { $loop = React\EventLoop\Factory::create(); $tcpConnector = new TcpConnector($loop); $i = 0; $status_text = ""; $services = $this->services; //$this->services->log('Starting connector'); $tcpConnector->create($this->host, $this->port)->then(function (React\Stream\Stream $stream) use(&$status_text, $message, $services) { $command_count = 0; $stream->on('data', function ($data) use(&$command_count, $stream, &$status_text, $message) { if ($command_count == 0) { //$services->log($message); $hash = $this->generateHash($data, $command_count, $message); $_message = sprintf("%s %s\n", $hash, $message); $stream->write($_message); $command_count++; } else { $status_text .= $data; if (substr($status_text, strlen($status_text) - 1, 1) == "\n") { $stream->end(); } } }); }); $loop->run(); $status_text = str_replace(['{', '}', '(', ')', '%', 'undef', '*::FH'], ['[', ']', '[', ']', '$', 'null', 'null'], $status_text); return $status_text; }
function goForIt() { $mongo = new MongoClient(); $emails = $mongo->selectDB('emails_tester')->selectCollection('emails'); $servers = ['tcp://gmail-smtp-in.l.google.com:25', 'tcp://alt1.gmail-smtp-in.l.google.com:25', 'tcp://alt2.gmail-smtp-in.l.google.com:25', 'tcp://alt3.gmail-smtp-in.l.google.com:25', 'tcp://alt4.gmail-smtp-in.l.google.com:25']; /** @var Client[] $clients */ $clients = []; $loop = React\EventLoop\Factory::create(); $logger = new \Zend\Log\Logger(); $writer = new \Zend\Log\Writer\Stream('php://output'); $logger->addWriter($writer); $logger->info('Creating clients.'); $start = microtime(1); $checked = 0; for ($i = 0; $i < 100; $i++) { $client = new Client($loop, function ($record) use(&$checked, $emails, $start, $logger) { $record['state'] = 'valid'; $emails->save($record); $checked++; if ($checked % 1000 == 0) { $logger->info("Checked: {$checked}. Speed: " . $checked / (microtime(1) - $start) . " emails/sec."); } }, function ($record, $reason) use(&$checked, $emails, $start, $logger) { $record['state'] = 'invalid'; $emails->save($record); if ($reason !== false) { $logger->warn("Email <{$record['email']}> failed check: {$reason}"); } $checked++; if ($checked % 1000 == 0) { $logger->info("Checked: {$checked}. Speed: " . $checked / (microtime(1) - $start) . " emails/sec."); } }); $clients[] = $client; } $logger->info('Done.'); $loop->addPeriodicTimer(0.001, function () use($clients, $emails, $servers, $logger) { foreach ($clients as $c) { if ($c->getState() === Client::STATE_DISCONNECTED) { $logger->info(spl_object_hash($c) . ": connecting..."); $c->connect($servers[mt_rand(0, count($servers) - 1)]); return; } if ($c->getState() === Client::STATE_BUSY) { continue; } if ($c->getState() === Client::STATE_IDLE) { $record = $emails->findOne(['state' => ['$exists' => false]]); if (!isset($record['email'])) { continue; } $record['state'] = 'in_progress'; $emails->save($record); $c->checkEmail($record); continue; } } }); $loop->run(); }
public function setUp() { $loop = React\EventLoop\Factory::create(); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dns = $dnsResolverFactory->createCached('8.8.8.8', $loop); $factory = new Socks\Factory($loop, $dns); $this->client = $factory->createClient('127.0.0.1', 9050); }
public function setUp() { $this->loop = React\EventLoop\Factory::create(); $factory = new Factory($this->loop); $promise = $factory->createClient('http://www.thomas-bayer.com/axis2/services/BLZService?wsdl'); $this->expectPromiseResolve($promise); $this->client = Block\await($promise, $this->loop); /* @var $client Client */ }
public function setUp() { $this->loop = React\EventLoop\Factory::create(); $socket = $this->createSocketServer(); $this->port = $socket->getPort(); $this->assertNotEquals(0, $this->port); $this->server = new Server($this->loop, $socket); $this->connector = new TcpConnector($this->loop); $this->client = new Client('127.0.0.1:' . $this->port, $this->connector); }
function pull_routine() { $loop = React\EventLoop\Factory::create(); $context = new React\ZMQ\Context($loop); $socket = $context->getSocket(ZMQ::SOCKET_PULL); $socket->bind('ipc://test.ipc'); $socket->on('message', function () { echo "-"; }); $loop->run(); }
public function testConstructor() { $loop = React\EventLoop\Factory::create(); try { $icmp = new Icmp($loop); } catch (Exception $e) { if ($e->getCode() === SOCKET_EPERM) { // skip if not root return $this->markTestSkipped('No access to create socket (only root can do so)'); } throw $e; } $this->assertInstanceOf('Clue\\React\\Icmp\\Icmp', $icmp); return $icmp; }
function push_routine() { $loop = React\EventLoop\Factory::create(); $context = new React\ZMQ\Context($loop); $socket = $context->getSocket(ZMQ::SOCKET_PUSH); $socket->connect('ipc://test2.ipc'); $loop->addPeriodicTimer(1, function () use($socket) { for ($n = 0; $n < rand(1, 30000); $n++) { if (rand(0, 100) >= 50) { echo "s"; $socket->send('bogus-' . $n); } else { echo "m"; $socket->send(array("bogus{$n}-1", "bogus{$n}-2", "bogus{$n}-3")); } } }); $loop->run(); }
function main() { $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $http = new React\Http\Server($socket, $loop); $st = new Storage('im.db'); $http->on('request', function ($request, $response) use($st) { $r = new Request($request, $response); # var_dump($r->request->getHeaders()); if (!array_key_exists("Content-Length", $r->request->getHeaders())) { $r->abort(400, "need json content"); return; } $r->contentLength = intval($r->request->getHeaders()["Content-Length"]); $request->on('data', function ($data) use($r, $st) { $r->addInput($data); if (!$r->readyToProcess()) { return; } if (!($js = $r->parseInput())) { $r->abort(400, "Invalid json"); return; } global $methods; // imported it from Methods.php. // Failed to find how to import it explicitly // (like python's "import Variable from Module") if (!isset($js->method) || !array_key_exists($js->method, $methods)) { $r->abort(400, "Invalid method"); return; } try { $methods[$js->method]($r, $js, $st); } catch (Exception $e) { $r->abort(500, "inernal server error"); } }); }); echo "Server running at http://127.0.0.1:1337\n"; $socket->listen(1337); $loop->run(); }
/** * Execute the console command. * * @return mixed */ public function fire() { $loop = React\EventLoop\Factory::create(); $pusher = new LowEndPing\Pusher(); $zmq_host = Config::get('lowendping.websocket.zeromq.host', '127.0.0.1') . ':' . Config::get('lowendping.websocket.zeromq.port', 5555); // Listen for the web server to make a ZeroMQ push after a response $context = new React\ZMQ\Context($loop); $pull = $context->getSocket(ZMQ::SOCKET_PULL); $this->info('Binding ZMQ to ' . $zmq_host); $pull->bind('tcp://' . $zmq_host); // Binding to 127.0.0.1 means the only client that can connect is itself $pull->on('message', array($pusher, 'onServerResponse')); $this->info('Binding Ratchet Websocket to 0.0.0.0:' . Config::get('lowendping.websocket.port', 8080)); // Set up our WebSocket server for clients wanting real-time updates $webSock = new React\Socket\Server($loop); $webSock->listen(Config::get('lowendping.websocket.port', 8080), '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect $webServer = new Ratchet\Server\IoServer(new Ratchet\Http\HttpServer(new Ratchet\WebSocket\WsServer(new Ratchet\Wamp\WampServer($pusher))), $webSock); $loop->run(); }
function run() { $this->before(); $port = $this->setting['port']; Load::file(MAIN_DIR . DS . 'vendor' . DS . 'autoload.php'); $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $conns = new \SplObjectStorage(); $this->connectionList =& $conns; $socket->on('connection', function ($conn) use($conns) { $this->onConnection($conn); $conns->attach($conn); $this->console('Attach new connection.'); $conn->on('data', function ($data) use($conns, $conn) { $this->onMessage($conn, $data); // foreach ($conns as $current) { // if ($conn !== $current) { // continue; // } // // $this->onMessage($conn, $data); // } }); $conn->on('end', function () use($conns, $conn) { $this->onClose($conn); $this->console('Detach connection.'); $conns->detach($conn); }); }); $this->console('Socket server listening on port ' . $port); $socket->listen($port); $loop->addPeriodicTimer($this->setting['timer'], function ($timer) use($conns) { $this->onTick($timer); }); $loop->run(); }
$headers = array('Content-Type' => 'text/plain'); $app['response']->writeHead(404, $headers); $app['response']->end('404'); break; case FastRoute\Dispatcher::METHOD_NOT_ALLOWED: $allowedMethods = $routeInfo[1]; // ... 405 Method Not Allowed $headers = array('Content-Type' => 'text/plain'); $app['response']->writeHead(405, $headers); $app['response']->end('405'); break; case FastRoute\Dispatcher::FOUND: $handler = $routeInfo[1]; $vars = $routeInfo[2]; // ... call $handler with $vars $app['vars'] = $vars; $handler_block = array_values(array_filter(explode('@', $handler))); $app['loader']->controller($app['path_block'][0], $handler_block[0], $app); $controller = new $handler_block[0]($app); $controller->{$handler_block}[1](); break; } }; // 创建 Http Server 服务器。 $app['port'] = 1337; $app['loop'] = React\EventLoop\Factory::create(); $app['socket'] = new React\Socket\Server($app['loop']); $app['http'] = new React\Http\Server($app['socket']); $app['http']->on('request', $httpKernel); $app['socket']->listen($app['port']); $app['loop']->run();
public function setUp() { $this->loop = React\EventLoop\Factory::create(); $this->factory = new Datagram\Factory($this->loop, $this->createResolverMock()); }
/** * Get the event loop instance. */ public function getLoop() { return React\EventLoop\Factory::create(); }
public function setUp() { $this->loop = React\EventLoop\Factory::create(); $this->factory = new Factory($this->loop); }
public function setUp() { $this->loop = React\EventLoop\Factory::create(); $this->connector = $this->getMock('React\\SocketClient\\ConnectorInterface'); $this->client = new Client('127.0.0.1:1080', $this->connector); }
public static function setUpBeforeClass() { self::$address = getenv('LOGIN'); self::$loop = React\EventLoop\Factory::create(); }
<?php include_once __DIR__ . '/../vendor/autoload.php'; $loop = React\EventLoop\Factory::create(); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dns = $dnsResolverFactory->createCached('8.8.8.8', $loop); $socket = new React\Socket\Server($loop); $socket->listen('9050', 'localhost'); $factory = new Socks\Factory($loop, $dns); $server = $factory->createServer($socket); $server->setAuthArray(array('tom' => 'god', 'user' => 'p@ssw0rd')); echo 'SOCKS server listening on localhost:9050' . PHP_EOL; $loop->run();
private function createLoop() { return React\EventLoop\Factory::create(); }