netty-socketIO 柔光的暖阳◎ 2022-01-16 02:35 238阅读 0赞 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 在web项目中,服务器向web页面推送消息是一种常见的业务需求,PC端的推送技术可以使用socket建立一个长链接实现。 传统的web服务器都是客户端发送请求,服务器端给出响应。现在更直接的要求是特定的时间内没有客户端发送请求的情况下服务器主动推送消息到客户端。 常见的主要手段以后一下几种: 【轮询】 :Ajax 隔一段时间向服务器发送请求,询问数据是否发生改变,从而进行增量式的更新。轮询的时间间隔成了一个问题:时间太短,会有大量的请求发送到服务器,会对服务器负载造成影响;间隔太长业务数据的实时性得不到保障。使用轮询的优点实现逻辑简单,缺点是无效请求的数量多,在用户量较大的情况下,服务器负载较高。因此轮询的方式通常在并发数量较少,并且对消息实时性要求不高的情况下使用。 【长轮询技术】: 客户端性服务器发送Ajax请求,服务器接到请求后“握“住连接,直到有新消息或超时(设置)才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。长轮询技术有点实时性高,无消息的情况下不会进行频繁的请求;缺点是服务端维护和客户端的连接会消耗掉一部分资源。 【插件提供socket方式】: 比如利用Flash XMLSocket,Java Applet套接字,Active包装的socket。优点是对原生的socket支持,和PC端,移动端方式相似;缺点是浏览器需要安装对应的插件。 【WebSocket】: 是HTML5开始提供给的一种浏览器与服务器间进行全双工通讯的网络技术。优点是更好的节省服务资源和带宽并达到实时通讯;缺点是目前还未普及,浏览器支持不好 考虑到浏览器兼容性和性能问题,采用长轮询是一种比较好的方式。netty-socketio 是一个开源的Socket.io 服务器端的一个Java的实现,他基于Netty框架。 转载于:https://my.oschina.net/u/730477/blog/3034458 [2019_Python_]: https://my.oschina.net/u/2663968/blog/3061697 [hot3.png]: /images/20220114/a1bb4b95fd3a44a7b9897928f0dd8b2d.png
还没有评论,来说两句吧...