当前位置: 首页 > news >正文

营销推广方式有哪些沈阳网络优化公司哪家好

营销推广方式有哪些,沈阳网络优化公司哪家好,建设银行移动门户网站,静态网站开发外文文献android的JavaScript自动化软件用过Hamibot和AutoX.js 不过在向后端传输二进制数据时都有些限制,不如浏览器前端那么自由。Hamibot的http按文档应该时能支持传字节数组,但是实际上应该还没有支持。AutoX.js的http也是这样,但是AutoX.js还支持…

android的JavaScript自动化软件用过Hamibot和AutoX.js 不过在向后端传输二进制数据时都有些限制,不如浏览器前端那么自由。Hamibot的http按文档应该时能支持传字节数组,但是实际上应该还没有支持。AutoX.js的http也是这样,但是AutoX.js还支持Websocket,它的websocket模块,采用okhttp3 实现,模块中包含了okhttp3 核心所有的类,而okhttp3支持发送String和ByteString,而后者则是我心心念念的二进制数据传输功能。
为什么我纠结于直接传输二进制数据,直接传文件或者将数据base64编码传到后端不简单么?其实主要是效率考虑,比如我使用截图,在内存中可以得到image的字节数组,如果传文件,还得把image写入本地硬盘,然后发送出去,又得读一遍本地硬盘,不是浪费了这两次IO么?当然系统会带IO缓存,耗时不一定会大。而转base64则编码效率比二进制至少低1/4(相当于8bit的数据只能编码成6bit的数据),所以,我还是希望能支持直接把二进制数据传到后端为好。
兴奋之余遇到一个问题,ByteString是okhttp3的websocket发送支持的数据类型,不是AutoX.js默认支持的数据类型,要把image的字节数组转成ByteString得依赖于okio这个外部库里的ByteString这个类的方法。

var img = captureScreen();
var clip=images.clip(img, 400, 400, 400, 400);
var ba=images.toBytes(clip,format = "png", quality = 100)
clip.recycle();importPackage(Packages["okhttp3"]); //导入包
let ByteString = Packages.okio.ByteString;var client = new OkHttpClient.Builder().retryOnConnectionFailure(true).build();
var request = new Request.Builder().url("ws://192.168.137.1:8080").build(); 
client.dispatcher().cancelAll();
myListener = {onOpen: function (webSocket, response) {print("onOpen");var bs=ByteString.of(ba);webSocket.send(bs);},onMessage: function (webSocket, msg) { print("msg");print(msg);},onClosing: function (webSocket, code, response) {print("正在关闭");},onClosed: function (webSocket, code, response) {print("已关闭");},onFailure: function (webSocket, t, response) {print("错误");print( t);}
}var webSocket= client.newWebSocket(request, new WebSocketListener(myListener)); 
setInterval(() => { // 防止主线程退出   
}, 1000);

websocket服务端是这样的:

const WebSocket = require('ws');
const fs=require('fs')const wss = new WebSocket.Server({ port: 8080 });wss.on('connection', function connection(ws) {ws.on('message', function incoming(message) {console.log("收到消息:");console.log(message.length)fs.writeFile('fromautox.png', message, 'utf8', err => {if (err) console.log('file system', err);else console.log('done');
});});ws.send('something');
});

这样就完成了前端抓图直接传到后端保存图片的流程
此前还担心ByteString这种数据类型需要okhttp的websocketlistener来解析处理,由于okhttp只有websocket客户端,还不支持websocket服务器,所以还需要一个websocket服务器来转发请求到另一个websocket客户端来用websocketlistener来处理收到的ByteString数据,当然也能正常工作,不过实验证明是不需要的了。

http://www.yayakq.cn/news/971296/

相关文章:

  • 计算机网站开发是什么专业电子商务购物平台
  • 做网站分为几种wordpress和公众号对接
  • 做新闻微网站有哪些方面免费地图制作网站
  • 做相册哪个网站好中介专门做别墅的网站
  • 开通网站申请邢台网站制作哪家强
  • 网站开发 链接指向文件夹东莞市公司网站建设怎么样
  • 微信网站开发公司电话wordpress付费浏览
  • 影视文化网站建设域名服务器的作用
  • 长安网站建设网络推广专做婚宴用酒是网站
  • 成都 企业网站建设公司产品分类 网站模板
  • dw怎么新建网站网站制作作业
  • 深圳建网站哪湖南网址大全
  • 亦庄网站建设龙岗菠菜网站建设
  • 网站建设公司杭州18年品牌建设经费投入额怎么算
  • 推广 网站建设设计网站官网狗
  • 阿里云 个人网站备案代理记账客户获取渠道
  • 布吉网站建设哪家技术好石材公司网站源码
  • 贵阳论坛网站建设网站建设陷阱
  • 销售网站建设公司国家企业信息公示网查询官网
  • 微信授权登录网站退出怎么做南京安居建设公司
  • 有什么设计logo网站检测网站空间容量
  • 自适应型网站建设报价wordpress 代码编辑器
  • 未来做哪个网站致富母婴用品网站建设
  • 西餐厅网站建设的需求分析网站建设费是
  • 企业建设网站有什么作用能发布自做的视频网站
  • evus在哪个网站做登记网站文件结构
  • 网站建设售后服务企业建设网站需注意哪些内容
  • 做招聘网站的需求分析旅游主题 wordpress
  • 个人网站备案内容描述沈阳网络建网站
  • 怎么做王者荣耀网站沧州网站建设设计