当前位置: 首页 > news >正文

合肥网站如何做网站给女朋友

合肥网站,如何做网站给女朋友,wordpress免插件灯箱,上市公司网站建设要求目录 说在前面场景fbs服务器代码前端typescript代码问题 说在前面 操作系统:Windows11node版本:v18.19.0typescript flatbuffer版本:24.3.25 场景 服务器(本文为golanggin)与前端通信时使用flatbuffer进行序列化与反序列化通信协议为websock…

目录

  • 说在前面
  • 场景
  • fbs
  • 服务器代码
  • 前端typescript代码
  • 问题

说在前面

  • 操作系统:Windows11
  • node版本:v18.19.0
  • typescript flatbuffer版本:24.3.25

场景

  • 服务器(本文为golang+gin)与前端通信时使用flatbuffer进行序列化与反序列化
  • 通信协议为websocket

fbs

  • 测试使用的flatbuffer schema如下:

    namespace fbs;enum Command:int32 {None        = 0,Mesh        = 1,PhysXml     = 2,
    }table MsgWebsocket {cmd:    Command;data:   [ubyte];
    }
    

    相对比较简单,唯一复杂的地方在于使用了一个byte数组

  • 获取flatc
    github release页面下载对应版本的二进制程序,这里下载了windows版本的
    在这里插入图片描述
    解压后得到flatc.exe

  • 生成golang代码

    bin\flatc.exe -g ws.fbs 
    # bin\flatc.exe -g -o ..\ ws.fbs
    # -o 制定生成目录 
    
  • 生成typescript代码

    bin\flatc.exe --ts ws.fbs 
    

服务器代码

  • 反序列化前端发来的数据:
    func handleFbMsg(p []byte, ws *websocket.Conn) {// GetRootAsMsgWebsocket为生成的函数,用于解析二进制数据msg := fbs.GetRootAsMsgWebsocket(p, 0)switch msg.Cmd() {case fbs.CommandMesh:mesh, err := os.ReadFile("./a.bin")if err == nil {ws.WriteMessage(websocket.BinaryMessage, buildByteFbMsg(msg.Cmd(), mesh))} else {fmt.Println(err)}case fbs.CommandPhysXml:}
    }
    
  • 序列化要发给前端的数据:
    func buildByteFbMsg(cmd fbs.Command, b []byte) []byte {builder := flatbuffers.NewBuilder(len(b) + 4)off := builder.CreateByteVector(b)// startfbs.MsgWebsocketStart(builder)fbs.MsgWebsocketAddCmd(builder, cmd)fbs.MsgWebsocketAddData(builder, off)// endend := fbs.MsgWebsocketEnd(builder)builder.Finish(end)nb := builder.FinishedBytes()return nb
    }
    
    flatbuffer的序列化过程比较复杂,具体的例子可以参考官方文档

前端typescript代码

  • 反序列化,代码和后端类似:
    private handleSceneMsg(data: any) {var buffer = new ByteBuffer(new Uint8Array(data.data))var msg = MsgWebsocket.getRootAsMsgWebsocket(buffer)switch (msg.cmd()) {case Command.Mesh:breakcase Command.PhysXml:break}
    }
    
  • 序列化:
    public ok(cmd: Command) {const builder = new flatbuffers.Builder(0)MsgWebsocket.startMsgWebsocket(builder)MsgWebsocket.addCmd(builder, cmd)const end = MsgWebsocket.endMsgWebsocket(builder)builder.finish(end)const data = builder.asUint8Array()this._socket.send(data)
    }
    

问题

  • 如何序列化?
    参考官方文档,说实在的,fb的序列化是目前见过最麻烦的了,其他大部分都是一个函数搞定
  • 前端反序列化出错
    var buffer = new ByteBuffer(data.data)
    
    最开始是这行代码,data是websocket的事件,data.data实际上是arraybuffer,需要转换一下,
    var buffer = new ByteBuffer(new Uint8Array(data.data))
    
http://www.yayakq.cn/news/372786/

相关文章:

  • 新增网站推广搜索引擎优化
  • 网站单个页面301跳转凡科互动小程序怎么解封
  • 找网络公司做的网站可以出售吗虚拟资源下载源码wordpress
  • 做电影网站心得建设学校网站的意义
  • 51ape是谁做的网站在网站的标题上怎么做图标
  • 思淘网站建设网站建设管理策划书
  • 网站开发成本有哪些网络推广外包业务销售
  • 网站构成的作用是什么网络营销第二板斧是什么
  • 网站里+动效是用什么做的营销型网站建设价值
  • 大连网站优化公司筹建网站信息技术
  • 中国风 古典 红色 网站源代码网站的开发技术
  • 域名可以绑定网站吗wordpress 图片加载很慢
  • 网站页面关键字在哪里网站获取访问者qq
  • 龙华民治网站建设公司jsp做网站视频教程
  • 新余服装网站建设公司内部网站设计
  • 商丘企业网站建设团队wordpress添加宋体字库
  • 网站好坏的标准设计说明英语翻译
  • 湛江免费建站模板wordpress 文章版本管理
  • 电商网站设计公司立找亿企邦优秀的网站设计案例
  • 远洋国际建设有限公司网站我怎么打不开建设银行的网站
  • 国外免费网站域名服务器wordpress设置网站主题
  • 烟台市建设工程检测站网站实际缴纳多少
  • 张家港企业网站建设wordpress管理后台
  • 网站建设 支持多种语言系部网站建设中期检查总结
  • 深圳网站建设-新奇网络建站系统推荐
  • 网站后端开发语言境外公司注册
  • 建设一个直播网站360免费wifi无法在win10下正常运行
  • 东莞外贸网站建设开发电子商务平台网站建造
  • 网站建设的实验步骤网站本地环境搭建教程
  • 专门培训seo的网站长治在百度做个网站多少钱