Egret社区

WebSocket 接收数据length为0

2017-8-19 17:57
18098
5银子
这是我接收的方法:
btyearray 的length 始终为0 。

private onReceiveMessage(evt : egret.ProgressEvent):void{
            console.log('ProgressEvent.SOCKET_DATA');
            let btyearray: egret.ByteArray = new egret.ByteArray();
             btyearray.endian = egret.Endian.LITTLE_ENDIAN;
             btyearray.position = 0;
            this._websocket.readBytes(btyearray);
            btyearray.position = 0;



需要指出的是 :
            this._websocket = new egret.WebSocket();
            this._websocket.type = egret.WebSocket.TYPE_BINARY;
            //添加收到数据侦听,收到数据会调用此方法
            this._websocket.addEventListener(egret.ProgressEvent.SOCKET_DATA,this.onReceiveMessage, this);
             //添加链接打开侦听,连接成功会调用此方法
            this._websocket.addEventListener(egret.Event.CONNECT, this.onSocketOpen, this);
            //添加链接关闭侦听,手动关闭或者服务器关闭连接会调用此方法
            this._websocket.addEventListener(egret.Event.CLOSE, this.onSocketClose, this);
            //添加异常侦听,出现异常会调用此方法
            this._websocket.addEventListener(egret.IOErrorEvent.IO_ERROR, this.onSocketError, this);

问题是 :
this._websocket.readBytes(btyearray); 后 , btyearray的length为0 , 无法取到数据。 Egret能发数据 , 后端能够取到 ; 但是后端发过来的数据 ,Egret WebSocket 始终得不到数据 , 为什么 ?????请各位大神解答

分享到 :
0 人收藏

8 个回复

倒序浏览
cair  登堂入室 | 2017-8-19 18:15:21
谁告诉你数据在evt里了?   var bytes: string = this.socket.readUTF();
cair  登堂入室 | 2017-8-19 18:20:35
回太快没仔细看。你问问服务器传给你的是什么数据格式
Aonaufly  自成一派 | 2017-8-19 18:24:45
cair 发表于 2017-8-19 18:20
回太快没仔细看。你问问服务器传给你的是什么数据格式

二进制格式
Aonaufly  自成一派 | 2017-8-19 18:25:00
cair 发表于 2017-8-19 18:20
回太快没仔细看。你问问服务器传给你的是什么数据格式

二进制格式
Aonaufly  自成一派 | 2017-8-19 18:25:21
cair 发表于 2017-8-19 18:20
回太快没仔细看。你问问服务器传给你的是什么数据格式

二进制格式 ------------------
cair  登堂入室 | 2017-8-19 18:44:46
private onSocketData(data: core.SocketEventData): void {
        egret.log(data);
        let bytes: core.ByteBuffer = new core.ByteBuffer();
        let buffer: core.ByteBuffer = data.messageData;
        let len: number = buffer.readShort();
        buffer.readBytes(bytes, 0, len);
    }
cair  登堂入室 | 2017-8-19 18:49:30
        private onSocketData(event: egret.ProgressEvent): void {
            let buffer: core.ByteBuffer = new core.ByteBuffer();
            this.m_webSocket.readBytes(buffer, buffer.length);
        }


Aonaufly  自成一派 | 2017-8-19 19:55:00
cair 发表于 2017-8-19 18:49
private onSocketData(event: egret.ProgressEvent): void {
            let buffer: core.ByteBu ...

core 第三方库 ? 我这边是没有这模块的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部