如何从websockets解析二进制数据?

时间:2015-11-01 13:41:53

标签: javascript php websocket

我试图从Websockets解析帧。 我是用Fiddler做的,它向我展示了帧中的二进制数据。 我需要相同的结果,但我需要通过Javascript或Php(或任何其他语言)获得它。 我试着用Js

做到这一点
var a = new WebSocket("ws://example.com");   
a.onopen = function() 
 { 
  console.log("open"); 
  a.send("test");
  var b = new Uint8Array([8,6,7,5,3,0,9]);
  a.send(b.buffer); };
a.onmessage = function(e) {  console.log(e.data.toString());};
a.onclose = function() { console.log("closed");};

但我没有收到关于" a.onmessage"的任何数据。 此刻我被困了。 再一次澄清我的问题。 我需要简单的代码示例来解析websockets中的帧。 Example of what I'm trying to parse

谢谢!

1 个答案:

答案 0 :(得分:0)

使用DataView

var socket = new WebSocket('ws://127.0.0.1:8081');
socket.binaryType = 'arraybuffer';

socket.onmessage = function (e) {
  var data = e.data;
  var dv = new DataView(data);

  // reads an UInt16 at the beginning 
  var uint16= dv.getUint16(0);

  // reads next UInt16 (sets 2 bytes of offset, since previous UInt16 takes 2 bytes)  
  var another_uint16= dv.getUint16(0);
};