Archived!
Use Ratchet IoServer
- asynchronous WebSocket in PHP as more featured replacement to this library.
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.
nex://nightfall.city/nps/
composer require yggverse/nps
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
Bind server host to listen incoming connections, 127.0.0.1
by default
Get current server host
Bind server port to listen incoming connections, 1915
by default
Get current server port
Set total content length limit by mb_strlen, 0
by default (unlimited)
Get current content length limit
Set packet line limit in bytes passing to fread, 1024
by default
Get current packet line limit
Set server status true
|false
to shutdown immediately
Get current server status
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
);
}
);
Get current Welcome
function, null
by default
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
);
}
);
Get current Pending
function, null
by default
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!';
}
);
Get current Handler
function, null
by default
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
}
);
Stop server instance.
Same to Server::setLive(false)
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