NetEase / pomelo-cn

The Chinese issues for pomelo.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

聊天项目!sioconnector.js下Connector.decode, msg什么都没有,请问是哪里弄错了吗?是不是客户端pomeloclient.js Protocol.encode的问题。。我用ie8做的客户端,chrome没问题

pengqiuyuan opened this issue · comments

嗯, 有几个方法低版本的ie不支持

On Thu, Jul 31, 2014 at 11:43 AM, pengqiuyuan notifications@github.com
wrote:


Reply to this email directly or view it on GitHub
#250.

ie不支持的几个,我用别的方法替代了下,比如isArray
function isArray(a) {
return (a.constructor.toString().match(/^function\ Array()/) != null);
}
new Date() 这样的
msg.timestamp = Date().valueOf();

var byteArray = new Uint16Array(HEADER + route.length + msgStr.length);
var byteArray = new Array(HEADER + route.length + msgStr.length);
Uint16Array 也是数组 ,我就先用Array替下,

可是现在报错的地方是在服务端了。。怎么办

pomele对象为空 ,isArray,Uint16Array的问题可以有办法的,在客户端。。。服务器端的msg 什么都没有 ,实在不知道是什么地方的问题。。

可能改了之后编解码的格式不一致了。

如果要改, 最简单的办法是客户端和服务都不做route压缩, 直接传json就好了

On Thu, Jul 31, 2014 at 11:56 AM, pengqiuyuan notifications@github.com
wrote:

ie不支持的几个,我用别的方法替代了下,比如isArray
function isArray(a) {
return (a.constructor.toString().match(/^function\ Array()/) != null);
}
new Date() 这样的
msg.timestamp = Date().valueOf();

var byteArray = new Uint16Array(HEADER + route.length + msgStr.length);
var byteArray = new Array(HEADER + route.length + msgStr.length);
Uint16Array 也是数组 ,我就先用Array替下,

可是现在报错的地方是在服务端了。。怎么办


Reply to this email directly or view it on GitHub
#250 (comment).

编码的格式应该是一样的 , 比如gate.gateHandler.queryEntry ,客户端有加一个HEADER,前五位的acsii码是0,0,0,2,27 我也是对照过的。。

我是想过用json,只是,之前有发布ios和android 他们用的还是 二进制压缩来传输数据的,
我在想服务端解码不修改的情况下 ,可不可以做到 ,就遇到了上面msg 没东西的情况

改了之后chrome正常、但是ie做客户端 ,服务器就报出了上面的错。。

http://www.kirupa.com/forum/showthread.php?346635-ASCII-and-Unicode-NULL-quot-0x00-quot-completely-cuts-off-end-of-string
找到问题在什么地方了 ,和这个一样的问题

var a = String.fromCharCode(0);
var b = String.fromCharCode(2);
var c = String.fromCharCode(93);
var str = "mmmm"+a+a+a+c+b+"gate"
alert(str);  //mmmm
alert(str.length) //13

chrome下打印出来的是 "mmmm ]gate" ,长度是13
ie7 8 9 下打印出来的是 “mmmm” ,长度是13 ,后面的加了一个ascii码0,转码后是空字符,直接没有后面了

2
3

,bt2Str这个方法修改下,就可以兼容了。。

4
5

/**
*
*client decode
*msg String data
*return Message Object
*/

var bt2Str = function(byteArray,start,end) {
var result = "";
for(var i = start; i < byteArray.length && i<end; i++) {
result = result + String.fromCharCode(byteArray[i]);
};
return result;
}

commented

ie就用json传输就好了,把connector的encode和decode方法替换一下