项目启动之前的准备会议都开了几天了,但是一直困扰于一个问题——联网的方式(Tcp/Ip与Http之间选择),如果这个问题不解决,后面的具体通信协议就没有办法确定(旧的协议里面有大量的服务端主动通信动作,这在Http下是不能完成的)。所以现在首要的问题是确定网络连接类型,根据这几天的讨论,我总结于下:
Tcp/Ip优点:1.速度快 2.老的协议是基于Tcp/Ip的,可以很容易的兼容,修改较少 3.客户端程序编写相对容易
Tcp/Ip缺点:不能满足使用代理(cmwap)上网的用户,这是因为cmwap只支持Http和Wap协议(或者换句话说只支持短连接,但是即时通讯软件本身更适合长连接)。
Http优点:可以满足所有联网类型,意思是基本可以保证在所有手机上我们的软件都可以运行(Iphone待定)。
Http缺点:1.联网速度慢 2.服务端改动较大,很多逻辑都要重新设定 3.服务端连接压力大,这是因为在Http协议下,为了保证消息的即时性,客户端必须不断的轮询(而且假定10秒请求一次,那么很有可能出现这样的情况:一条新的消息在间隔15秒以后才出现在客户端) 4.据外包团队技术人员说:Iphone手机上,如果是Http连接,那么程序处于后台挂起的时候,程序是不运行的(这一点是不可接受的,等于退出了),我们自己的技术人员提出了一种解决方案,但是还没有得到验证。
总结有以下的解决办法:
1.采用Tcp/Ip长连接,那么以代理方式上网的手机就只有舍弃(这种类型的用户不多,但是肉少,也是肉啊)。说明:在Android中,程序可以控制用户手机的联网类型,意思就是我们程序中可以把cmwap联网的手机修改为cmnet,然后Tcp/Ip协议就可以使用了。但是这样的后果是某些地区(运营商在各个地区的流量收费方式不同,比如上海现在的cmwap和cmnet收费一样,但是其他地区可能cmnet收费高于cmnet)用户的流量费将“相当可观”,补充方案是在软件启动的时候提示用户,本软件将采用cmnet联网,会产生“一定”的流量费,由运营商收取。在Iphone中,我不清楚该平台是否支持程序控制接入点(接入点即联网类型)。但是早期的Iphone版QQ是不支持cmwap联网的(至少2.5之前的版本不支持,2.5+支持cmwap连接,但是网上还是有很多网友反馈cmwap不能登录QQ,没有可靠来源)。
2.采用Http连接,所有手机都可以联网(Iphone挂起以后暂时不确定)。说明:Http连接可以通过头设置分为长连接和短连接,我们可以根据用户的手机联网方式选择。长连接的话,和Tcp/Ip基本完全一样,短连接就是通常的Http连接(满足上面分析的Http优点和缺点)。这个方案暂时有两个问题:1.服务器端要适配两种类型的协议,不少业务都要分两种处理逻辑 2.在Http长连接的情况下,暂时不确定Iphone挂起以后,程序会不会假死(就是不运行)
3.据网友反馈:腾讯采用的是Tcp/Ip协议,但是它花钱“买通”了运营商,运营商的代理网关支持腾讯的长连接。在用户是cmwap联网的方式下,也不会有任何问题。
4.模仿QQ联网方式
Iphone版QQ早期是不支持cmwap的,2.5以后才是支持。由于不能看到源码,通过网上资料显示:手机QQ早期版本基于Tcp/Ip,后期开始支持Http。
Tcp/Ip优点:1.速度快 2.老的协议是基于Tcp/Ip的,可以很容易的兼容,修改较少 3.客户端程序编写相对容易
Tcp/Ip缺点:不能满足使用代理(cmwap)上网的用户,这是因为cmwap只支持Http和Wap协议(或者换句话说只支持短连接,但是即时通讯软件本身更适合长连接)。
Http优点:可以满足所有联网类型,意思是基本可以保证在所有手机上我们的软件都可以运行(Iphone待定)。
Http缺点:1.联网速度慢 2.服务端改动较大,很多逻辑都要重新设定 3.服务端连接压力大,这是因为在Http协议下,为了保证消息的即时性,客户端必须不断的轮询(而且假定10秒请求一次,那么很有可能出现这样的情况:一条新的消息在间隔15秒以后才出现在客户端) 4.据外包团队技术人员说:Iphone手机上,如果是Http连接,那么程序处于后台挂起的时候,程序是不运行的(这一点是不可接受的,等于退出了),我们自己的技术人员提出了一种解决方案,但是还没有得到验证。
总结有以下的解决办法:
1.采用Tcp/Ip长连接,那么以代理方式上网的手机就只有舍弃(这种类型的用户不多,但是肉少,也是肉啊)。说明:在Android中,程序可以控制用户手机的联网类型,意思就是我们程序中可以把cmwap联网的手机修改为cmnet,然后Tcp/Ip协议就可以使用了。但是这样的后果是某些地区(运营商在各个地区的流量收费方式不同,比如上海现在的cmwap和cmnet收费一样,但是其他地区可能cmnet收费高于cmnet)用户的流量费将“相当可观”,补充方案是在软件启动的时候提示用户,本软件将采用cmnet联网,会产生“一定”的流量费,由运营商收取。在Iphone中,我不清楚该平台是否支持程序控制接入点(接入点即联网类型)。但是早期的Iphone版QQ是不支持cmwap联网的(至少2.5之前的版本不支持,2.5+支持cmwap连接,但是网上还是有很多网友反馈cmwap不能登录QQ,没有可靠来源)。
2.采用Http连接,所有手机都可以联网(Iphone挂起以后暂时不确定)。说明:Http连接可以通过头设置分为长连接和短连接,我们可以根据用户的手机联网方式选择。长连接的话,和Tcp/Ip基本完全一样,短连接就是通常的Http连接(满足上面分析的Http优点和缺点)。这个方案暂时有两个问题:1.服务器端要适配两种类型的协议,不少业务都要分两种处理逻辑 2.在Http长连接的情况下,暂时不确定Iphone挂起以后,程序会不会假死(就是不运行)
3.据网友反馈:腾讯采用的是Tcp/Ip协议,但是它花钱“买通”了运营商,运营商的代理网关支持腾讯的长连接。在用户是cmwap联网的方式下,也不会有任何问题。
4.模仿QQ联网方式
Iphone版QQ早期是不支持cmwap的,2.5以后才是支持。由于不能看到源码,通过网上资料显示:手机QQ早期版本基于Tcp/Ip,后期开始支持Http。