客户端通知功能的实现:要么客户端轮训,要么建立长连接

[软件开发] 季雨林 2019/9/6 13:15:00

做APP开发,WindowsForm客户端等开发的同学应该都有题目里的这类推送需求。


关于消息的推送,显然方向是从服务端传输到客户端,而且客户端往往都是没有固定公网地址的。这样一个方向下:

从客户端来讲,只能通过轮训来实现,属于7层开发。

表现方式为借口的定时反复调用。补充说明一点,客户端轮训需要想个办法每次只收发少量数据,在确认有变更的情况下才拉取整个结果集!实现方式比如只返回最后更新时间,或者只返回id集合检查更新时间等等。

从服务端来讲,则可以通过TCP长连接来实现,属于4层开发。

表现方式为socket或者websocket。


轮训和长连接各有优缺点:

方案优点缺点
客户端轮训

1,实现简单,客户端定时器刷新请求接口


1,多次占用请求次数
2,消息有0-轮训周期的时间延迟
3,只能靠客户端触发
4,流量消耗较多

建立长连接

1,信息实时性高,延迟主要是网络延迟
2,连接服务端可控制

1,占用服务端并发连接数
2,连接实时状态的保持,技术上稍微复杂
3,依赖可靠地通信协议





原文地址: https://www.opengps.cn/Blog/View.aspx?id=427 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示