此包已被弃用且不再维护。没有建议的替代包。

NPS 协议的 PHP 8 库

1.3.1 2024-04-30 01:15 UTC

This package is auto-updated.

Last update: 2024-06-03 20:19:39 UTC


README

已归档!

使用 RatchetIoServer - PHP 中的异步 WebSocket,作为此库的更多功能的替代。

nps-php

PHP 8 / Composer 的 NPS 协议库

就像 Titan 是 Gemini 的卫星一样,NPS 是 NEX 协议(参见nex-php)的卫星。
它监听行中的单个点以表示包结束。

规范

nex://nightfall.city/nps/

用法

composer require yggverse/nps

服务器

构建交互式服务器实例以监听 NPS 协议连接!

$server = new \Yggverse\Nps\Server;

在构造函数中提供可选的 hostportsizelinelive 参数

$server = new \Yggverse\Nps\Server('127.0.0.1', 1915);

或者,在对象初始化后使用以下设置器

Server::setHost

将服务器主机绑定到监听传入连接,默认为 127.0.0.1

Server::getHost

获取当前服务器主机

Server::setPort

将服务器端口绑定到监听传入连接,默认为 1915

Server::getPort

获取当前服务器端口

Server::setSize

通过 mb_strlen 设置总内容长度限制,默认为 0(无限)

Server::getSize

获取当前内容长度限制

Server::setLine

通过传递给 fread 的字节数设置包行限制,默认为 1024

Server::getLine

获取当前包行限制

Server::setLive

将服务器状态设置为 true|false 以立即关闭

Server::getLive

获取当前服务器状态

Server::setWelcome

在建立对等连接时定义应用程序逻辑

$server->setWelcome(
    function (
        string $connect
    ): ?string
    {
        printf(
            "connected: %s\n\r",
            $connect
        );

        return sprintf(
            "welcome, %s\n\r",
            $connect
        );
    }
);

Server::getWelcome

获取当前的 Welcome 函数,默认为 null

Server::setPending

在对等方发起初始请求时定义应用程序逻辑

$server->setPending(
    function (
        string $request,
        string $connect
    ): ?string
    {
        printf(
            'connection: %s requested: %s',
            $connect,
            $request,
        );

        return sprintf(
            'received: %s',
            $request
        );
    }
);

Server::getPending

获取当前的 Pending 函数,默认为 null

Server::setHandler

在接收到完整包时定义基本应用程序逻辑

$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

获取当前的 Handler 函数,默认为 null

Server::start

运行服务器对象

$server->start();

可选地,将处理函数定义为参数以处理依赖于客户端请求的应用程序逻辑

$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

停止服务器实例。

等同于 Server::setLive(false)

测试

  1. nc 127.0.0.1 1915 - 使用 nc 连接到服务器
  2. test - 输入目标路径
  3. YOUR MESSAGE GOES HERE - 输入消息文本
  4. . - 使用点提交包

发送任何文件

test
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
 ╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
.

cat file.txt | nc 127.0.0.1 1915