|
|
|
# nps-php
|
|
|
|
|
|
|
|
PHP 8 / Composer Library for NPS Protocol
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
## Specification
|
|
|
|
|
|
|
|
`nex://nightfall.city/nps/`
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
```
|
|
|
|
composer require yggverse/nps
|
|
|
|
```
|
|
|
|
|
|
|
|
## Server
|
|
|
|
|
|
|
|
Build interactive server instance to listen NPS protocol connections!
|
|
|
|
|
|
|
|
``` php
|
|
|
|
$server = new \Yggverse\Nps\Server;
|
|
|
|
```
|
|
|
|
|
|
|
|
Provide optional `host`, `port` and `size` arguments in constructor or use available setters after object initiation.
|
|
|
|
|
|
|
|
``` php
|
|
|
|
$server = new \Yggverse\Nps\Server('127.0.0.1', 1915);
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Server::setHost
|
|
|
|
#### Server::getHost
|
|
|
|
#### Server::setPort
|
|
|
|
#### Server::getPort
|
|
|
|
#### Server::setSize
|
|
|
|
#### Server::getSize
|
|
|
|
#### Server::setLive
|
|
|
|
#### Server::getLive
|
|
|
|
|
|
|
|
#### 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 (
|
|
|
|
string $content,
|
|
|
|
string $request,
|
|
|
|
string $connect
|
|
|
|
) {
|
|
|
|
printf(
|
|
|
|
'connection: %s request: %s',
|
|
|
|
$connect,
|
|
|
|
$request
|
|
|
|
);
|
|
|
|
|
|
|
|
var_dump(
|
|
|
|
$content
|
|
|
|
);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Server::stop
|
|
|
|
|
|
|
|
Stop server instance.
|
|
|
|
|
|
|
|
Same to `Server::setLive(false)`
|
|
|
|
|
|
|
|
### Testing
|
|
|
|
|
|
|
|
1. `nc 127.0.0.1 1915` - connect server using `nc`
|
|
|
|
2. `test` - enter the target path
|
|
|
|
3. `YOUR MESSAGE GOES HERE` - enter the message text
|
|
|
|
4. `.` - commit package with dot
|
|
|
|
|
|
|
|
To send any file:
|
|
|
|
|
|
|
|
``` file.txt
|
|
|
|
test
|
|
|
|
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
|
|
|
|
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
|
|
|
|
╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
|
|
|
|
.
|
|
|
|
```
|
|
|
|
|
|
|
|
`cat file.txt | nc 127.0.0.1 1915`
|