PHP / Composer Library for NPS Protocol
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
2.6 KiB

7 months ago
# nps-php
7 months ago
7 months ago
PHP 8 / Composer Library for NPS Protocol
7 months ago
7 months ago
Like Titan for Gemini, NPS is the satellite for NEX protocol (see also [nex-php](https://github.com/YGGverse/nex-php))\
it listen for single dot in line to signal the package ending.
7 months ago
7 months ago
## Specification
`nex://nightfall.city/nps/`
7 months ago
## Usage
```
composer require yggverse/nps
```
## Server
Build interactive server instance to listen NPS protocol connections!
``` php
$server = new \Yggverse\Nps\Server;
```
7 months ago
Provide optional `host`, `port`, `size`, `line` and `live` arguments in constructor:
7 months ago
``` php
$server = new \Yggverse\Nps\Server('127.0.0.1', 1915);
```
7 months ago
Alternatively, use following setters after object initiation
7 months ago
7 months ago
#### Server::setHost
7 months ago
Bind server host to listen incoming connections, `127.0.0.1` by default
7 months ago
#### Server::getHost
7 months ago
Get current server host
7 months ago
#### Server::setPort
7 months ago
Bind server port to listen incoming connections, `1915` by default
7 months ago
#### Server::getPort
7 months ago
Get current server port
7 months ago
#### Server::setSize
7 months ago
Set total content length limit by [mb_strlen](https://www.php.net/manual/en/function.mb-strlen.php), `0` by default (unlimited)
7 months ago
#### Server::getSize
7 months ago
Get current content length limit
#### Server::setLine
Set packet line limit in bytes passing to [fread](https://www.php.net/manual/en/function.fread.php#length), `1024` by default
#### Server::getLine
Get current packet line limit
7 months ago
#### Server::setLive
7 months ago
Set server status `true`|`false` to shutdown immediately
7 months ago
#### Server::getLive
7 months ago
Get current server status
7 months ago
#### Server::start
Run server object using this method.
Define handler function as the argument to process application logic dependent of client request.
``` php
$server->start(
function (
7 months ago
bool $success,
7 months ago
string $content,
7 months ago
string $request,
string $connect
): ?string
{
7 months ago
printf(
'connection: %s request: %s',
7 months ago
$connect,
$request
);
7 months ago
if ($success)
{
var_dump(
$content
);
}
return 'thank you!';
7 months ago
}
);
```
#### Server::stop
Stop server instance.
Same to `Server::setLive(false)`
7 months ago
7 months ago
### Testing
7 months ago
1. `nc 127.0.0.1 1915` - connect server using `nc`
7 months ago
2. `test` - enter the target path
7 months ago
3. `YOUR MESSAGE GOES HERE` - enter the message text
4. `.` - commit package with dot
To send any file:
``` file.txt
7 months ago
test
7 months ago
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
.
```
7 months ago
`cat file.txt | nc 127.0.0.1 1915`