pomelo-flatbuffer

flatbuffer for pomelo

Usage no npm install needed!

<script type="module">
  import pomeloFlatbuffer from 'https://cdn.skypack.dev/pomelo-flatbuffer';
</script>

README

FlatBuffer

使用说明

pomelo 中安装与使用

安装

npm install pomelo-flatbuffer --save

使用

在 app.js 中添加一下脚本

// app configuration
app.configure('development', 'gate|connector', () =>
{
    app.use(flatBuffer, {
        serverProtos : '/serverProtos.json',
        clientProtos : '/clientProtos.json',
        serverFBPath : '/serverBFBS/',
        clientFBPath : '/clientBFBS/'
    });
    app.set('connectorConfig',
        {
            connector   : pomelo.connectors.hybridconnector,
            // timeout:10,
            handshake   : handshake,
            heartbeat   : 5,
            useProtobuf : false,
            setNoDelay  : true,
            // disconnectOnTimeOut : true
            // ,distinctHost:true
        });
});

参数说明

  • serverProtos dafault: config/serverProtos.json 服务器发送到客户端的消息
  • clientProtos default: config/clientProtos.json 客户端发送到服务器的消息
  • serverFBPath default: config/serverBFBS/ flatbuffer 序列化服务器发送的数据(bfbs 格式文件)
  • clientFBPath default: config/clientBFBS/ flatbuffer 反序列化服务器接受的数据(bfbs 格式文件)

bfbs 文件生成

# cd tests
# flatc -o bfbsData  -b --schema flatSchema/*.fbs

实例使用

文件夹说明

  • serverBFBS 服务器发送到客户端的消息, 和 serverProtos.json 一致

    • .json route与class对照表
    • .bfbs flatc生成的数据
  • clientBFBS 客户端发送到服务器的消息, 和 clientProtos.json 一致

    • .json route与class对照表
    • .bfbs flatc生成的数据
  • flatSchema flat文件的消息格式

const FlatBuffer = require('../lib/components/flatbuffer');
const flatBufferInstance = FlatBuffer(app, {
    serverProtos : '/serverProtos.json',
    clientProtos : '/clientProtos.json',
    serverFBPath : '/serverBFBS/',
    clientFBPath : '/clientBFBS/'
});

FlatBuffer.start(()=>{
    // 序列化数据
    const data = flatBufferInstance.encode('ItemDistances', exampleData.ItemDistances);
    // 反序列化数据
    flatBufferInstance.decode('ItemDistances', data);
})

测试

node ./test/PomeloFlatBuffer.js 
node ./test/FlatBufferTest.js