rubyqorn / socket
基于PHP socket api的Socket层
v1.0.1
2020-12-10 21:39 UTC
Requires
- php: ^8.0
- ext-sockets: *
Requires (Dev)
- phpunit/phpunit: ^9.3
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设置