• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
smileyqp
https://github.com/smileyqp
博客园    首页    新随笔    联系   管理    订阅  订阅

关于saga+websocket+protobufjs

前段时间项目要求需要用saga+websocket+protobufjs,当时对这些还是不是很了解,走了一些弯路,不过最后还算是完成了。

关于整个流程梳理:

  • 进入页面时候,页面dispatch一个消息到saga告诉saga需要连接websocket
  • saga接收到消息,开始进行websocket连接
  • 连接好了之后就可以进行数据传输等了;按照ws的几个操作,onopen、onmessage等等

最重要的就是:数据转化部分

potobuf我们怎样在前端接收解析呢?
  • 安装protobufjs:npm install protobufjs
  • 拿到和后台共同定义的potobuf文件;放在saga文件夹下(我是酱紫放的)
  • 将potobuf文件转化成json或者js;我这里是转化成json应用的
    node pbjs -t json .proto的文件目录 -o 生成的json或者js放置的文件目录(包含文件名)
  • 最后一步就是在onmessage中引用转化过来的json或者js对后端传过来的数据进行解析转化成可用的数据啦
		var jsonDescriptor = require("./msg.json");
		var root = protobuf.Root.fromJSON(jsonDescriptor);
        var messageFile = root.lookupType("Web.Message");
        var buf = new Uint8Array(e.data);
        var message = messageFile.decode(buf);
        console.log(message.classId);

当时写完了之后;发现其实很简单,但是当时由于没有了解用过,并且找相关资料的时候遇到问题;所以当时还是花了一些时间。总结,希望对也是同样情况的有一点帮助啦!

posted @ 2019-04-28 17:10  smileyqp  阅读(142)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3