已经https 怎么 nodejs wss
答案:2 悬赏:0 手机版
解决时间 2021-02-02 10:24
- 提问者网友:不要迷恋哥
- 2021-02-01 20:01
已经https 怎么 nodejs wss
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-02-01 20:47
在Web项目中,有时需要通过协议调取来自其他环境的数据。HTTPS是一种应用于安全数据传输的网络协议。我们都知道Ajax可以异步请求数据,但单单通过ajax无法实现跨域。采用一些其他方式需要根据不同的浏览器做相应处理,火狐,谷歌等和IE需要各自做相应判断,所以这种通过浏览器来解析数据虽然省略了数据的解压缩等处理,但是在有安全认证等情况下做跨域处理确比较困难。比如:IE的请求Header无法更改。这时通过Node请求并解析数据就显得比较简单了。如下是nodejs中通过https请求数据的全过程:varhttps=require('https');varzlib=require('zlib');varpost_data="………………";//请求数据varreqdata=JSON.stringify(post_data);varoptions={ hostname:'10.225.***.***', port:'8443', path:'/data/table/list', method:'POST', rejectUnauthorized:false, requestCert:true, auth:'admin:123456************', headers:{ 'username':'admin', 'password':'123456************', 'Cookie':'locale=zh_CN', 'X-BuildTime':'2015-01-0120:04:11', 'Autologin':'4', 'Accept-Encoding':'gzip,deflate', 'X-Timeout':'3600000', 'Content-Type':'Application/json', "Content-Length":reqdata.length }};varreq=https.request(options,function(res){});req.write(reqdata);req.on('response',function(response){ switch(response.headers['content-encoding']){ case'gzip': varbody=''; vargunzip=zlib.createGunzip(); response.pipe(gunzip); gunzip.on('data',function(data){ body+=data; }); gunzip.on('end',function(){ varreturndatatojson=JSON.parse(body); req.end(); }); gunzip.on('error',function(e){ console.log('error'+e.toString()); req.end(); }); break; case'deflate': varoutput=fs.createWriteStream("d:temp.txt"); response.pipe(zlib.createInflate()).pipe(output); req.end(); break; default:req.end(); break; }});req.on('error',function(e){ console.log(newError('problemwithrequest:'+e.message)); req.end(); setTimeout(cb,10);});注:options,需要有请求数据的长度,options需要加上'Accept-Encoding':'gzip,deflate',返回的数据需要判断是哪种压缩方式,然后解压缩获取到数据。gunzip的end事件里的returndatatojson即是获取的数据。
全部回答
- 1楼网友:爱难随人意
- 2021-02-01 21:47
可以使用 ws模块实现,
具体实现请看 DEMO,谢谢。 GitHub 网页链接
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯