rubyqorn/socket

基于PHP socket api的Socket层

v1.0.1 2020-12-10 21:39 UTC

This package is auto-updated.

Last update: 2024-09-20 00:18:25 UTC


README

这是一个客户端和服务器socket连接的层。

必须安装的PHP扩展

您必须执行四个动作

  • 配置您的配置文件。
  • 创建client.php或server.php文件
  • 调用方法
  • 从CLI运行或扩展

TCP和UNIX套接字的示例

1) 创建配置文件。文件只能有yaml(yml)或json扩展名

* 使用YAML的TCP套接字配置
settings:
    socket_type: tcp
    address: 127.0.0.1
    port: 8000
    content_length: 2048
* 使用YAML的UNIX套接字配置
settings:
    socket_type: unix
    address: socket.sock
    content_length: 2048

2) 创建客户端和服务器文件处理器。

server.php
<?php

require_once 'vendor/autoload.php';

use Qonsillium\QonsilliumSocket;
use Qonsillium\ServerSocket;

$server = new QonsilliumSocket('config.yaml');
$server->runServer(function(ServerSocket $socket) {
    echo $socket->send('Hello from server!');
});
client.php
<?php

require_once 'vendor/autoload.php';

use Qonsillium\QonsilliumSocket;
use Qonsillium\ClientSocket;

$server = new QonsilliumSocket('config.yaml');
$server->runClient(function(ClinetSocket $socket) {
    echo $socket->send('Hello from client!');
});

3) 从CLI运行

 john@doe:/workdir/$ php server.php
 john@doe:/workdir/$ php client.php

4) 从QonsilliumSocket扩展

<?php 

namespace App;

use Qonsillium\QonsilliumSocket
use Qonillium\ClientSocket

class SocketMessagePrinter extends QonsilliumSocket
{
    public function handleServerSocketMessage(string $myMessage)
    {
        $serverMessage = $this->runClient(function(ClientSocket $client) use ($myMessage) {
            return $client->send($myMessage);
        });

        if ($serverMessage === 'Hello from server!') {
            // handle this action
        }
    }
}

但是,在实例化处理器类时,不要忘记在构造函数中设置配置文件中的socket设置