socket 还是 http

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

6个回答

用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。

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

jinnianshilongnian
jinnianshilongnian 哈哈
大约 7 年之前 回复
weixin_42190416
weixin_42190416 楼主写了不少经典的文章,不过这个回答有点。。。说不过去了。。。
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 只要不是服务器主动推客户端 就可以用http 简单 而且web服务器 有成熟的集群技术等 可以解决你并发问题
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 那就走socket
大约 7 年之前 回复
zerochending
zerochending 实时性要求比较高~ 亲 你的QQ 多少 方面加吗 我的 381477721 请教下 详细的东东~
大约 7 年之前 回复

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

surelei
surelei 不需要这么复杂,lvs负载均衡非常简单。
大约 7 年之前 回复
zerochending
zerochending mina框架的话,在水平扩展上有问题吗,是不是要自己做负载了,如果增加机器的话,不想http可以使用apache或者nginx做负载均很个,而mina 需要自己实现一个 configserver,用来做扩展时的转发,自己实现路由算法
大约 7 年之前 回复

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!