1. Go to this page and download the library: Download spiral/roadrunner-tcp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
spiral / roadrunner-tcp example snippets
piral\RoadRunner\Worker;
use Spiral\RoadRunner\Tcp\TcpWorker;
use Spiral\RoadRunner\Tcp\TcpResponse;
use Spiral\RoadRunner\Tcp\TcpEvent;
// Create new RoadRunner worker from global environment
$worker = Worker::create();
$tcpWorker = new TcpWorker($worker);
while ($request = $tcpWorker->waitRequest()) {
try {
if ($request->getEvent() === TcpEvent::Connected) {
// You can close connection according your restrictions
if ($request->getRemoteAddress() !== '127.0.0.1') {
$tcpWorker->close();
continue;
}
// -----------------
// Or continue read data from server
// By default, server closes connection if a worker doesn't send CONTINUE response
$tcpWorker->read();
// -----------------
// Or send response to the TCP connection, for example, to the SMTP client
$tcpWorker->respond("220 mailamie \r\n");
} elseif ($request->getEvent() === TcpEvent::Data) {
$body = $request->getBody();
// ... handle request from TCP server [tcp_access_point_1]
if ($request->getServer() === 'tcp_access_point_1') {
// Send response and close connection
$tcpWorker->respond('Access denied', TcpResponse::RespondClose);
// ... handle request from TCP server [server2]
} elseif ($request->getServer() === 'server2') {
// Send response to the TCP connection and wait for the next request
$tcpWorker->respond(\json_encode([
'remote_addr' => $request->getRemoteAddress(),
'server' => $request->getServer(),
'uuid' => $request->getConnectionUuid(),
'body' => $request->getBody(),
'event' => $request->getEvent()
]));
}
// Handle closed connection event
} elseif ($request->getEvent() === TcpEvent::Close) {
// Do something ...
// You don't need to send response on closed connection
}
} catch (\Throwable $e) {
$tcpWorker->respond("Something went wrong\r\n", TcpResponse::RespondClose);
$worker->error((string)$e);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.