[]Laya.Socket 是不是不支持Safari浏览器二进制格式的数据传输?
Laya.Socket 是不是不支持Safari浏览器二进制格式的数据传输?
使用二进制传输 后端收到的竟然是 [object ArrayBuffer] 纯文本,其他浏览器测试正常.
使用二进制传输 后端收到的竟然是 [object ArrayBuffer] 纯文本,其他浏览器测试正常.
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
wudi199553
赞同来自:
hh821207
赞同来自:
/*
* name;
*/
class Test{
private socket: Laya.Socket;
private byte: Laya.Byte;
constructor() {
//初始化引擎
Laya.init(600, 400, Laya.WebGL);
this.byte = new Laya.Byte();
//这里我们采用小端
this.byte.endian = Laya.Byte.LITTLE_ENDIAN;
this.socket = new Laya.Socket();
//这里我们采用小端
this.socket.endian = Laya.Byte.LITTLE_ENDIAN;
//建立连接
this.socket.connect("localhost", 9244);
// this.socket.connectByUrl("ws://localhost:9241");
// this.socket.connectByUrl("ws://localhost:8989");
this.socket.on(Laya.Event.OPEN, this, this.openHandler);
this.socket.on(Laya.Event.MESSAGE, this, this.receiveHandler);
this.socket.on(Laya.Event.CLOSE, this, this.closeHandler);
this.socket.on(Laya.Event.ERROR, this, this.errorHandler);
}
private openHandler(event: any = null): void {
//正确建立连接;
this.byte.writeByte(1);//写入一个字节
this.byte.writeInt16(20);//写入一个int16的数据
this.byte.writeFloat32(20.5);//写入一个32位的浮点数据
this.byte.writeUTFString("hello");// 写入一个字符串
var by:Laya.Byte = new Laya.Byte();//这里声明一个临时Byte类型
by.endian = Laya.Byte.LITTLE_ENDIAN;//设置endian;
by.writeInt32(5000);//写入一个int32数据
by.writeUint16(16);//写入一个uint16 数据
this.byte.writeArrayBuffer(by.buffer);//把临时字节数据的数据写入byte中,这里注意写入的是by.buffer;
this.socket.send(this.byte.buffer);//这里是把字节数组的数据通过socket发送给服务器。
this.byte.clear();//清除掉数据;方便下次读写;
}
private receiveHandler(msg: any = null): void {
///接收到数据触发函数
// this.socket.send("!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
private closeHandler(e: any = null): void {
//关闭事件
// this.socket.send("!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
private errorHandler(e: any = null): void {
//连接出错
// this.socket.send("!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
new Test();
这是使用google浏览器发送到后台,后台获取的数据,乱码是因为直接转成的字符串,实际取是正确的
这是使用safair浏览器发送到后台,后台获取的数据,转成的字符串,就是乱码是“[object ArrayBuffer]”纯文本