async fetchData(url: string): Promise {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`Network response was not ok. Status: ${response.status}`);
}
const buffer = await response.arrayBuffer();
return new Uint8Array(buffer);
} catch (error) {
console.error('Error fetching binary data:', error);
throw error;
}
}
async main() {
const url = 'https://xxxx';
try {
const binaryData = await this.fetchData(url);
// 在这里可以对二进制数据进行解析和处理
console.log('Binary data:', binaryData);
// 示例:将二进制数据转换为 Base64 字符串
const base64String = btoa(String.fromCharCode(...binaryData));
console.log('Base64 string:', base64String);
} catch (error) {
console.error('An error occurred:', error);
}
}
在cocos creator里 打印不出response.arrayBuffer(); 这个, 似乎是 CC没实现这个方法!
你的代码可以在win模拟器上运行吗?
‘Content-Type’,‘text/plain’
new Uint8Array(response.text())
可以试试这样操作行不行
试过 不行,估计是 字符串转二进制 或者 二进制转字符串 会丢弃一些字节
导致解析出的二进制数据错误!
那奇怪了 还真没碰到丢失字节的情况
function stringToUint8Array(str){
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array
}
这样转还会丢?
还是不行, 我估计在
let response_text = await response.text();
这个时候 取得的数据就不是服务器原始下发的数据了!
方便提供一下测试接口吗 我试一下
不行啦! 这是已经上架了的 在线游戏 抱歉抱歉
3.8.x
https 无法获取二进制数据, 网络游戏如何破局?
调整一下服务端发送的content-type类型
具体值是什么?
搜一下content-type 二进制,不止这一个参数 是HTTP发送二进制有一套规则 都配置对 再看结果
我们服务器现在对接 cocos coreator 2.4.10的客户端是用二进制的,没问题
客户端换到 3.8.x 用fatch方式获取不到二进制数据,但看起来是传过来字符串了,转不出二进制数据
2.4.10用的是XMLHttpRequest这个方式!

为什么不用websocket呢?
我们项目一直是http的,很难改啦! 不让服务器不支持


