yggverse
f8a0f2e350
|
7 months ago | |
---|---|---|
src | 7 months ago | |
.gitignore | 7 months ago | |
LICENSE | 7 months ago | |
README.md | 7 months ago | |
composer.json | 7 months ago |
README.md
nps-php
PHP 8 / Composer Library for NPS Protocol
Like Titan for Gemini, NPS is the satellite for NEX protocol (see also nex-php)
it listen for single dot in line to signal the package ending.
Specification
nex://nightfall.city/nps/
Usage
composer require yggverse/nps
Server
Build interactive server instance to listen NPS protocol connections!
$server = new \Yggverse\Nps\Server;
Provide optional host
, port
, size
, line
and live
arguments in constructor:
$server = new \Yggverse\Nps\Server('127.0.0.1', 1915);
Alternatively, use following setters after object initiation
Server::setHost
Bind server host to listen incoming connections, 127.0.0.1
by default
Server::getHost
Get current server host
Server::setPort
Bind server port to listen incoming connections, 1915
by default
Server::getPort
Get current server port
Server::setSize
Set total content length limit by mb_strlen, 0
by default (unlimited)
Server::getSize
Get current content length limit
Server::setLine
Set packet line limit in bytes passing to fread, 1024
by default
Server::getLine
Get current packet line limit
Server::setLive
Set server status true
|false
to shutdown immediately
Server::getLive
Get current server status
Server::setWelcome
Define application logic on peer connection established
$server->setWelcome(
function (
string $connect
): ?string
{
printf(
"connected: %s\n\r",
$connect
);
return sprintf(
"welcome, %s\n\r",
$connect
);
}
);
Server::getWelcome
Get current Welcome
function, null
by default
Server::setPending
Define application logic on peer make initial request
$server->setPending(
function (
string $request,
string $connect
): ?string
{
printf(
'connection: %s requested: %s',
$connect,
$request,
);
return sprintf(
'received: %s',
$request
);
}
);
Server::getPending
Get current Pending
function, null
by default
Server::setHandler
Define basic application logic on complete packet received
- could be also defined as Server::start argument
$server->setHandler(
function (
bool $success,
string $content,
string $request,
string $connect
): ?string
{
printf(
'connection: %s request: %s',
$connect,
$request
);
if ($success)
{
var_dump(
$content
);
}
return 'thank you!';
}
);
Server::getHandler
Get current Handler
function, null
by default
Server::start
Run server object
$server->start();
Optionally, define handler function as the argument to process application logic dependent of client request
$server->start(
function (
bool $success,
string $content,
string $request,
string $connect
): ?string
{
printf(
'connection: %s request: %s',
$connect,
$request
);
if ($success)
{
var_dump(
$content
);
}
return 'thank you!'; // null|string response
}
);
Server::stop
Stop server instance.
Same to Server::setLive(false)
Testing
nc 127.0.0.1 1915
- connect server usingnc
test
- enter the target pathYOUR MESSAGE GOES HERE
- enter the message text.
- commit package with dot
To send any file:
test
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
.
cat file.txt | nc 127.0.0.1 1915