技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 前端开发 > javascript > 正文

js解析protobuf

来源: 技术CTO 阅读:

js如何解析protobuf。。。
1,服务端把数据经过protobuf,在经过64位编码发送到我客户端。
2,客户端用js解析。


(1),我在网上找到例子。把服务端给我的64位编码解析了。
(2),解析完以后,我要把它经过protobuf解析。(这里不会,我用的谷歌很早提供的protobuf-js也不行(它的js本身就有语法错误)。)    http://blog.csdn.net/xnn2s/article/details/8580917博客说能够解决,但是我看到。(js plugin须要我们自己编译,步骤如下:1. 先下载整个protobuf,编译出protoc和各种lib库。)我遇到问题,1,它这个没法下载。2,我也不知道怎么编译。
不按照这个思路也行,只要js能解析protobuf就行。。。

(1)的例子在这儿
this.decode = function (input) {  
        var output = "";  
        var chr1, chr2, chr3;  
        var enc1, enc2, enc3, enc4;  
        var i = 0;  
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
        while (i < input.length) {  
            enc1 = _keyStr.indexOf(input.charAt(i++));  
            enc2 = _keyStr.indexOf(input.charAt(i++));  
            enc3 = _keyStr.indexOf(input.charAt(i++));  
            enc4 = _keyStr.indexOf(input.charAt(i++));  
            chr1 = (enc1 << 2) | (enc2 >> 4);  
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
            chr3 = ((enc3 & 3) << 6) | enc4;  
            output = output + String.fromCharCode(chr1);  
            if (enc3 != 64) {  
                output = output + String.fromCharCode(chr2);  
            }  
            if (enc4 != 64) {  
                output = output + String.fromCharCode(chr3);  
            }  
        }  
        output = _utf8_decode(output);  
        return output;  
    }

帖子要沉的节奏。。。
我现在已经能解析了,但是IE浏览器不支持。我的做法。https://github.com/dcodeIO/ProtoBuf.js/wiki 下载对应的js文件,引入。它对象声明方式有问题,需要做出一定修改。还要引入proto文件。谷歌,火狐浏览器测试通过,但是IE并不支持ArrayBuffer,所以IE不能解析。
用json不行吗。。谷歌的这个东东没研究过。。帮你up下,看如何解决
这种序列化与反序列化能在浏览器里做么? 就像你说的,反序列化必需要有.proto文件的, 服务端做都很麻烦
引用 4 楼 showbo 的回复:
用json不行吗。。谷歌的这个东东没研究过。。帮你up下,看如何解决

服务端不给提供json。。我只能自己搞了。。。唉。。
引用 5 楼 whos2002110 的回复:
这种序列化与反序列化能在浏览器里做么? 就像你说的,反序列化必需要有.proto文件的, 服务端做都很麻烦

我现在就在浏览器做的。但是使用到了html5中的对象,IE10以下不支持。。。。
引用 6 楼 wh359126613 的回复:
Quote: 引用 4 楼 showbo 的回复:

用json不行吗。。谷歌的这个东东没研究过。。帮你up下,看如何解决

服务端不给提供json。。我只能自己搞了。。。唉。。

https://github.com/search?l=JavaScript&q=protobuf&ref=searchresults&type=Repositories

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^