SocketIO:服务端推送

本文介绍了服务端推送的概念及其重要性,探讨了客户端长轮询的不足,并详细阐述了WebSocket和SocketIO在服务端推送中的作用。SocketIO提供了一种便捷的实时、双向、事件驱动的通信方案,支持WebSocket和HTTP长轮询,适用于即时通讯、视频弹幕等场景。通过Java实现的SocketIO服务端和客户端示例展示了其简单易用的特点。
摘要由CSDN通过智能技术生成

前言

在介绍SocketIO之前,先说下服务端推送是怎么一回事。所谓服务端推送,就是服务端将数据或者消息实时地推送到客户端上。最常见的场景就是即时通讯,除此之外,视频弹幕、图文直播等功能也用到了服务端推送这项技术。

之所以使用服务端推送,是为了把服务端的数据及时、迅速地推送到客户端,当然,如果能够尽可能地降低服务端的性能损耗,那就再好不过了。

要想及时地获取服务端数据,最简单的实现方案莫过于客户端长轮询了。简而言之,就是客户端起一个定时器,定时向服务端发送HTTP请求查询最新数据,以此实现客户端与服务端的数据保持一致。这种方案的好处是实现简单,坏处就是性能损耗过高,而且数据更新也不及时。由于需要定时向服务器发送HTTP请求,如果客户端数量过多,则服务器需要承受很大的并发压力。再者,服务端的数据更新可能并不频繁,但是客户端也要定期过来询问,这会让服务端和客户端都做很多无用功,效率自然不高。还有一点就是,由于客户端没法做到每时每刻都向服务端请求数据,只能定时请求,假如说相邻2次请求的间隔时间过长,则服务端的数据就没法及时地“推送”到客户端,这会造成数据推送延迟。

 

服务端推送的其他方案

客户端长轮询方案是最简单的方案,但是缺点诸多,业界应该没几家公司会采用。我们都知道,TCP协议是支持双向通信的,也就是说服务端可以向客户端发送数据包,客户端也可以向服务端发送数据包。但由于HTTP协议的限制,基于HTTP协议通信的网络应用只能由客户端主动发起,服务端被动响应,故无法做到服务端向客户端推送数据。虽然HTTP 2.0支持服务端推送,但是HTTP 2.0的服务端推送跟我们这里说的服务端推送还不是一回事,有兴趣的朋友可以去深入了解下。

既然TCP协议支持服务端推送,而HTTP协议不支持,那么事情就好办了。我们传输层依旧使用TCP协议,应用层改用其他协议不就得了。事实上,业界也确实是这么做的。最常见的方案就是使用现成的协议,如WebSocket。当然,也可以使用自定义协议来实现服务端推送。关于WebSocket协议这里不会展开细讲,感兴趣的可以看旧文:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值