电脑计算机编程入门教程自学编程语言_aardio教程_HP-Socket的websock服务端向网页ws客户端发送gzip压缩数据的问题

Admin Admin
发布:2022-04-30 06:00:00 分类:心得经验
简码编程在使用aardio+hpsocket做websocket服务端的时候,
尝试向网页javaScript版的websocket客户端发送经过gzip压缩的内容,
但是发现导致网页的ws客户端断开连接了.

这是什么原因呢?
可能是经过gzip压缩的内容是二进制的,
里面的二进制乱码内容无法被网页ws客户端正确解析,
所以就导致ws断开连接了.

是不是可以让hpsocket在发送gzip压缩内容的时候设置应答头为gzip,
然后在网页ws客户端那边识别并解压接收到的gzip内容呢?
网上找到的资料说是可以的,
返回的是通过Gzip压缩后的二进制数据,是blob对象,需要使用pako.js进行gzip解压缩处理:
ws.socket.onmessage = res => {//ws接收到的数据
var blob = res.data//接收到的blob对象
var reader = new FileReader()
reader.readAsArrayBuffer(blob)//将blob对象数据转化成ArrayBuffer类数组
reader.onload = function(e){
if(e.target.readyState == FileReader.DONE){
let data = pako.inflate(reader.result)//使用pako.js将ArrayBuffer类数组转化成Uint8Array
strData = String.fromCharCode.apply(null, new Uint16Array(data))//转化成JSON字符串
console.log(JSON.parse(strData))
}
}
}
看起来挺复杂的,
而且pako.js不支持包含有中文字符的解压缩,
需要加一层转换为URL编码的处理,
所以我还是先收藏等有空了再测试这种方式吧.

我用的是另一种方式,
hpsocket的websocket服务端是明文发送json,
只有某一项是经过gzip压缩的,
而这一项压缩的乱码,
用base64进行转码变成正常的字符,
这样传到网页ws客户端后,
再把base64字符串转换回gzip编码进行解压缩,
实际应用过程中这样做是成功了的.

为什么我选择这种方式呢?
因为简单,好理解,
其它方式我折腾来折腾去,
为解决一个问题又会引发多个问题,
一生二,二生三,三生万物,
太折腾了,
能搞出一个成功的方式就先用着,
等有空了再去研究优化.

把gzip压缩内容进行base64转码后再发送,
优点是发送的是字符串明文而不是二进制乱码,
所以不用担心客户端解析错误造成各种问题,
缺点是gzip压缩内容进行base64转码后体积会大一点点,
如果ws客户端数量较多需要大规模发送的话,
会多消耗一些带宽资源.
不过没有什么问题是充值解决不了的,
要真是WS客户端数量多到需要充值解决的时候,
相信钱包也不会太小,充值也不是什么大问题了.
[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13752
用aardio创建web工程图文讲解(1) 12842
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11744
aardio绘图演示 11413
通过chrome.dll中间件控制外部chrome浏览器 10127
我常用的aardio技巧 9775
《边学C语言边赚钱——简码编程入门教程》系列集合 9617
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9323
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8557
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8048
编程入门教程:aardio批量上传文件并显示进度条 7883
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7037
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6908
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6501
乐玩插件AARDIO调用 6087
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1