EventSslContext
class object. Turns plain HTTP server into HTTPS server. It means that
if
ctx
is configured correctly, then the underlying buffer events will be based
on OpenSSL sockets. Thus, all traffic will pass through the SSL or TLS.
Nota:
This parameter is available only if
Event
is compiled with OpenSSL support and only with
Libevent
2.1.0-alpha
and higher.
<?php /* * Simple HTTP server. * * To test it: * 1) Run it on a port of your choice, e.g.: * $ php examples/http.php 8010 * 2) In another terminal connect to some address on this port * and make GET or POST request(others are turned off here), e.g.: * $ nc -t 127.0.0.1 8010 * POST /about HTTP/1.0 * Content-Type: text/plain * Content-Length: 4 * Connection: close * (press Enter) * * It will output * a=12 * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * * $ nc -t 127.0.0.1 8010 * GET /dump HTTP/1.0 * Content-Type: text/plain * Content-Encoding: UTF-8 * Connection: close * (press Enter) * * It will output: * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * (press Enter) * * $ nc -t 127.0.0.1 8010 * GET /unknown HTTP/1.0 * Connection: close * * It will output: * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * * 3) See what the server outputs on the previous terminal window. */
echo "\n >> Reading input buffer ...\n"; $buf = $req->getInputBuffer(); while ($s = $buf->readLine(EventBuffer::EOL_ANY)) { echo $s, PHP_EOL; } echo "No more data in the buffer\n"; }
$base = new EventBase(); $http = new EventHttp($base); $http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);
$http->setCallback("/dump", "_http_dump", array(4, 8)); $http->setCallback("/about", "_http_about"); $http->setDefaultCallback("_http_default", "custom data value");
$http->bind("0.0.0.0", 8010); $base->loop(); ?>
O exemplo acima produzirá
algo semelhante a:
a=12
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
(press Enter)
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
If you try to use the SSL context parameter and you receive an error that you're using 2 parameters instead of 1, then your libevent library is not recent enough to support all features. When installing the event extension with PECL, the libevent library needs a certain version to support certain functions. PECL does not show any errors or warnings but simple disables everything that your libevent version does not support.