js解析websocket位元據包__c#

來源:互聯網
上載者:User
js解釋資料包
做一個項目,伺服器要給我發一個資料包,格式為,前面16位short,後32位int,後面就全是string,我用javascript怎麼去把這個資料包解讀出來?   用WebSocket,接收到的就是一個Blob對象.而我要給伺服器返回的也是這種格式,我又怎麼把我的資料封裝成這樣的資料包?
------解決方案--------------------
var reader = {   readAs: function(type,blob,cb){
var r = new FileReader();
r.onloadend = function(){      if(typeof(cb) === 'function') {        cb.call(r,r.result);      }    }    try{      r['readAs'+type](blob);    }catch(e){}  }}
function parseBlob(blob){  var shortVar, intVar, stringVar;  reader.readAs('ArrayBuffer',blob.slice(0,2),function(arr){    shortVar = (new Int16Array(arr))[0];    console.log(shortVar);  });
  reader.readAs('ArrayBuffer',blob.slice(2,6),function(arr){    intVar = (new Int32Array(arr))[0];    console.log(intVar);  });
  reader.readAs('Text',blob.slice(6,blob.size,'text/plain;charset=UTF-8'),function(result){    stringVar = result;    console.log(stringVar);  });}
var buffer = new ArrayBuffer(6);//建立6個位元組的緩衝,前兩個位元組是short,後四個是intvar bufferView = new Int16Array(buffer); //建立16位的視圖,那麼視圖的長度應該是3bufferView[0] = 32767;bufferView[1] = 0;bufferView[2] = 1;  //現在buffer中的內容由低位到高位應該是 //11111111 11111110 00000000 00000000 100000000 00000000var blob = new Blob([bufferView,"words words 文本文本文本文本"]);//構造這個blob類型//測試一下parseBlob函數是否正確parseBlob(blob);//32767//65536//words words 文本文本文本文本//第一個short是32767//第二個int,前16位為0,第17位為1,所以結果是65536//第三個字串,和我們構造blob的時候一樣

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.