socket 还是 http

项目刚开始,手机的客户端需要和我的服务端做交互,经理让做个评估,我的要求是:消息及时,高并发,如果socket,在linux上单台提供的理论连接能有多少。http又有那些缺憾那~ 求个大牛分析

用Socket+Tcp长连接的优点
1、协议可以自定义,用二进制协议,可以使流量消耗最小
2、可以实现服务器向手机反向推的功能,这样手机得到的消息是最及时的。
这个方案的劣势是
1、Socket方案工作量大,需要自己定义传输的协议格式,自己实现编解码,控制心跳,解决TCP粘包,分包的情况
2、手机耗电快,长时间的网络连接,可能2、3个小时就没电了。
2、手机的网络情况复杂,进出电梯等都会丢失信号,此时需要实现很复杂的重连机制。另外手机的网络连接是通过电信运营商的网关的,网关一般不允许长时间的连接,每隔一个小时

使用Http的优缺点差不多是和Socket的是相反的

如果没有特殊的要求,建议使用Http接口

socket虽然实时,但是耗电
http间歇轮询 不实时 ,但是相对不费电

linux上单台提供的理论连接0xffff,因为它的类型是unsigned short所以最多支持怎么多,一般是支持到4096再多的话性能将下降.

http简单相对实现简单。http也是走的socket 在tcp之上做的封装。
socket连接可以减少网络销毁,但是需要在客户端/服务器间建立通信协议,解析数据比较麻烦。

如果没什么必要,建议http,比如android提供了httpClient。

如何交互,需要实时性很强吗?

由于现在有netty和mina之类的基于socket的网络开发框架,所以其实直接使用socket来通讯也不麻烦。

可以看看我写的一个长连接推送框架,已经在最大的移动终端使用,具体网址:http://dragonsoar.iteye.com/blog/1567771

safari一些版本不支持web socket很头疼