网站首页 > 技术文章 正文
在切图网的网站切图项目开发中也会经常遇到一些数据接口处理,数据联调的需求,通常情况下大部分是用ajax去传输json数据,然后渲染到页面,链接的协议是http(s),方法可以用jquery的ajax,vue的axios等等,都封装好的上手比较简单,但是最近遇到的一个是利用ws协议,需要用WebSocket来链接获取,期间遇到了不少问题,比如blob大数据的处理,WebSocket链接方法,是否有好的WebSocket插件等等,这里做个简单的普及。
ws协议:另外一种协议,和http的最大优势是,不需要前端往后端发送请求,后端可以直接向前端发送数据,可能你已经想到了,用来做即时聊天在合适不过了
blob:大数据的一种格式,通常没有json的那么好的格式规范,类似一种二进制数据(像是乱码),需要自己去解析和截取需要的字符串,解析方法可以利用FileReader
ws链接插件:有没有一款和jquery封装ajax一样的插件呢,我以为有,但是实际没有(没有主流的),后来才发现链接ws原生也只需要几行简单代码,所以基本上告别插件了
代码如下:
ws = new WebSocket('ws://trade.xxx.com:3100/qt123_m6fk');
ws.onopen = function(evt) {
console.log(evt);
//console.log(ws.readyState);
if (ws.readyState===1) {
ws.send('sub|EURUSD|GBPUSD');
}
};
ws.onclose = function(evt) {
console.log(2);
};
ws.onmessage = function(evt) {
//console.log(1);
//console.log(evt.data);
var blob = evt.data;
//console.log(parseBlob(blob));
//通过FileReader读取数据
var reader = new FileReader();
//以下这两种方式我都可以解析出来,因为Blob对象的数据可以按文本或二进制的格式进行读取
//reader.readAsBinaryString(blob);
//reader.readAsText(blob, 'gbk2312');
reader.readAsArrayBuffer(blob);
reader.onload = function(){
//这个就是解析出来的数据
//console.log(this.result);
var dataview = new DataView(this.result);
//var pz = dataview.substring(0);
var bid = dataview.getFloat64(7,true).toFixed(5);
var ask = dataview.getFloat64(15,true).toFixed(5);
var last = dataview.getFloat64(23,true).toFixed(5);
var volume = dataview.getBigUint64(31,true);
//var datetime_msc = dataview.getBigInt64(39,true);
var datetime_msc = dataview.getInt32(39,true);
//var t = getUint64(dataview,39,true);
console.log(bid,ask,last,volume,new Date(datetime_msc).toISOString());
}
};
ws.onerror = function(evt) {
console.log(4);
};
标签:websocket
猜你喜欢
- 2024-11-11 eat、have和take表达“吃”有区别吗?
- 2024-11-11 字节二面:谈谈你对JS中的this指向的理解!
- 2024-11-11 你知道JS的“三座大山”吗?带你初识前端JavaScript经典内容
- 2024-11-11 ThreeJS 给全景图片添加标注 threejs 360全景
- 2024-11-11 cheap date可不是“便宜的约会”,这些date你了解吗?
- 2024-11-11 JavaScript 内的 this 指向 js中this指针
- 2024-11-11 丝滑般 Vue 拖拽排序树形表格组件Vue-DragTreeTable
- 2024-11-11 5 年,只为了一个更好的校验框架 农行网银显示此内容不能显示在一个框架中
- 2024-11-11 this 指向问题,全网最全最简单口诀
- 2024-11-11 什么是HTM或HTML文件?如何打开HTM和HTML文件?
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-