网站首页 > 技术文章 正文
在切图网的网站切图项目开发中也会经常遇到一些数据接口处理,数据联调的需求,通常情况下大部分是用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-10-12 一个注解,优雅的实现 WebSocket 集群!
- 2024-10-12 nestjs+vue+ts打造一个酷炫的星空聊天室(含完整数据库设计)
- 2024-10-12 springboot+websocket+vue网站实时在线人数(01)模型设计
- 2024-10-12 Vue + H5 最佳实践模板 vue boostrap 开发h5
- 2024-10-12 Java分享客栈之——SpringBoot+WebSocket+Stomp共同搭建群聊项目
- 2024-10-12 10个Vue开发技巧「实践」 vue快速入门与实战开发
- 2024-10-12 如何实现前端实时通信(WebSocket等)
- 2024-10-12 Golang GinWeb框架5-绑定多种请求类型的数据
- 2024-10-12 基于springboot+vue的仓库管理系统
- 2024-10-12 2023全新升级,基于Vue3新标准,打造后台综合解决方案kejian
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)