这里,您将学习OnePort服务器用法。
<?php
require 'vendor/autoload.php';
$server = new \CloudSky\OnePort\Server("path/to/config.json");
其中,构造函数一共有一个参数,是可选的。 它可以是一个字符串,表示配置文件的路径,也可以是一个数组,包括配置,也可以为空,稍后导入配置。
OnePort 有几种进行配置的方式。
$server->importConfig('path/to/config.json');
配置文件须是Json格式的。例子:
{
"name": "abc",
"count": "3",
"http.type": "proxy",
"http.param": "tcp:\/\/127.0.0.1:80",
"user": {
"test": {
"password": "3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2",
"whitelist": [],
"blacklist": [],
"shortcut": []
}
},
"shortcut": []
}
单条导入:
$server->config('key', 'value');
多条导入:
$server->config([
'key1' => 'value1',
'key2' => 'value2',
'...' => '...'
]);
名称 | 解释 | 例子 |
---|---|---|
name | 本Worker的名称,仅用来标识,可以为空。 | testOnePortWorker |
count | 启动进程数,一般为CPU线程数 | 3 |
http.type | Http访问时的handler | jump 或 proxy 或 handle |
http.param | Http访问时所使用Handler的参数 | jump例子:http://baidu.com/ proxy例子:tcp://127.0.0.1:80 handle例子:/home/oneport/handler.php |
$server->addUser('someUser', 'password');
$server->removeUser('someUser');
$server->setPassword('someUser', 'password');
$server->addWhiteList('someUser', 'tcp://something.let.someuser.see:1234');
$server->addBlackList('someUser', 'tcp://something.don.t.let.someuser.see:1234');
$server->disableWhiteList('someUser');
$server->disableBlackList('someUser');
当黑白名单都开启时,优先使用白名单。
$server->exportConfig('path/to/config.json');
$server->listen('0.0.0.0:5280');
这里,您将学习 OnePort 客户端的使用。
$client = new \CloudSky\OnePort\Client("127.0.0.1:5280");
参数说明:唯一的一个参数是 OnePort 服务端的地址。
目前服务端原生还不支持SSL。 默认将不适用SSL。
$client->enableSSL(false);
有一个参数,为假则不启用,为真则启用。
OnePort 服务端为了安全,需要用户登陆。
$client->login("someUser", "password");
第一个参数是用户名,第二个参数是密码。
Map 是远程地址与本地地址映射关系的描述文件,是可选的。
一个示例Map:
[
["tcp:\/\/10.0.50.23:443", "tcp:\/\/127.0.0.23:443", "tcp"]
]
第一个是源地址,第二个是映射到的本机地址,第三个是SSL(一般不需要开启,若设置为“SSL”,则会把SSL先转为普通TCP再传输)。
$client->importMap("path/to/map.json");
//普通地址Map,把tcp://10.0.50.23:22映射到127.0.0.23:22
$client->map("tcp://10.0.50.23:22", "tcp://127.0.0.23:22");
//Alias映射,将Alias “aliasTest” 映射到本地。
$client->map("aliasTest", "tcp://127.0.0.21:2333");
$client->exportMap("path/to/map.json");
无论是什么,都记得执行这一句:
\Workerman\Worker::runAll();
很简单,一句话启动:
$echoserver = new \CloudSky\OnePort\Dev\EchoServer("tcp://127.0.0.1:3245");
唯一的一个参数是监听地址,记得也要使用 3 中的方法启动。
很简单:
$worker = new \Workerman\Worker("tcp://127.0.0.1:3246");
$echoserver->serve($worker);