这里的推送指的是客户端可以实时接收到服务器的最新数据,而不是轮询实现的定时拉取,想知道其中的原理,比如如何建立网络连接?网络请求是怎样的?服务器如何处理连接?如何保持连接而又不会导致客户端过量耗电和耗流量?
推送的原理很简单,就是长连接。
因为普通的HTTP或者其他方式的短连接,在客户端获得响应后就关闭了连接,所以服务器就无法再知晓客户端的网络位置,也就无法进行消息的推送。
而长连接就是客户端与服务器建立长时间的连接,当需要推送时,服务器就可以根据连接的信息找到客户端并能发送信息给客户端。这样就实现了推送。
一般是长连接,客户端向服务器发送请求,然后服务器hold住这个链接,用来保持联系。
客户端如果断开链接,根据协议会通知服务器关闭此链接。
服务端为了防止客户端如果非正常断开链接,会定时发送心跳包,检测客户端是否在线。
需要及时通讯的一般都是长链接,比如你开着QQ断开网络,APP立马会有反馈,开着浏览器着不会。
关于电量的话,影响因素很多。
你的问题太大了,足够写很多了,这里也是给你简单说了下,里面还有很多细节可以了解。
项目初期一般推荐使用第三方推送,不写名字了,避免推广嫌疑
如果你是问 web 的话,可以了解下 websocket