设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 软件追踪 查看内容

重磅更新SD框架2.2.0-beta版本来了

2017-7-27 23:59| 发布者: joejoe0332| 查看: 981| 评论: 0|原作者: oschina|来自: oschina

摘要: SD 框架最新版本 2.2.0 版本带了全新的高度自由的服务器设计体验。最大的变化是开发者简单的修改配置就可以自由的开启多个端口,并且为每个端口配置不同的协议,并且在框架内部会自动转换协议。比如说A用户连接到了9 ...

SD 框架最新版本 2.2.0 版本带了全新的高度自由的服务器设计体验。

最大的变化是开发者简单的修改配置就可以自由的开启多个端口,并且为每个端口配置不同的协议,并且在框架内部会自动转换协议。

比如说A用户连接到了9091端口,B用户连接到了9092端口,服务器通过广播或者群发消息时会自动将信息封装成端口定义的协议,开发者无需关心。同样AB用户发来的消息也会被服务器自动解除封装路由到控制器中。

use Server\CoreBase\PortManager;

$config['ports'][] = [
    'socket_type' => PortManager::SOCK_TCP,
    'socket_name' => '0.0.0.0',
    'socket_port' => 9091,
    'pack_tool' => 'LenJsonPack',
    'route_tool' => 'NormalRoute',
];

$config['ports'][] = [
    'socket_type' => PortManager::SOCK_TCP,
    'socket_name' => '0.0.0.0',
    'socket_port' => 9092,
    'pack_tool' => 'EofJsonPack',
    'route_tool' => 'NormalRoute',
];

$config['ports'][] = [
    'socket_type' => PortManager::SOCK_HTTP,
    'socket_name' => '0.0.0.0',
    'socket_port' => 8081,
    'route_tool' => 'NormalRoute'
];

$config['ports'][] = [
    'socket_type' => PortManager::SOCK_WS,
    'socket_name' => '0.0.0.0',
    'socket_port' => 8083,
    'route_tool' => 'NormalRoute',
    'pack_tool' => 'NonJsonPack',
    'opcode' => PortManager::WEBSOCKET_OPCODE_TEXT
];

return $config;

通过ports.php配置文件我们开起了2个tcp端口和1个http端口以及1个websocket。

启动服务器后我们可以看到每个端口的状态,以及赋予端口的协议封装器。

关于协议封装器Pack,新版本也进行了增强,继承IPack接口现在需要实现5个接口

interface IPack
{
    function encode($buffer);

    function decode($buffer);

    function pack($data);

    function unPack($data);

    function getProbufSet();
}

其中encode和decode是协议头的解析,pack和unpack是协议体的序列化工作,getProbufSet则会返回swoole的协议配置信息。

框架默认提供了4个基本pack和一个protobuf的pack。

DispatchPack:框架内部和Dispatch服务器通讯时使用的内部协议,序列化速度最快,但只支持swoole。

EofJsonPack:使用JSON协议+EOF的封装器

LenJsonPack:使用Len头+JSON协议的封装器

NonJsonPack:JSON协议封装器,没有任何头部,适用于websocket协议。

SD2.2.0版本还提供一个跨进程的高速内存缓存模块

public function http_map_add()
{
    $cache = Cache::getCache('TestCache');
    $cache->addMap('123');
    $this->http_output->end($cache->getAllMap());
}

其中TestCahce是一个Task类

class TestCache extends Task
{
    public $map = [];

    public function addMap($value)
    {
        $this->map[] = $value;
        return true;
    }

    public function getAllMap()
    {
        return $this->map;
    }
}

使用起来是不是超级简单?

SD2.2.0-beta版本目前只能在git上下载,composer安装的还是2.1.5版本,欢迎大家尝鲜,这将是目前SD框架更新历上最好用的一个版本!(由于配置文件改变过大,旧用户需要手动修改配置模板)


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部