java中使用websocket推送消息服务器端怎么才能主动推送

java中使用websocket推送消息服务器端怎么才能主动推送,第1张

目前要实现消息实时推送,有两种方法,一种是ajax轮询,由客户端不停地请求服务器端,查询有没有新消息,然后再由服务器返回结果;另外一种就是long poll,通过一次请求,询问服务器有没有新消息更新,如果没有新消息时,会保持长连接,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。这两种都是单向链接,需要被动的请求服务器,而不是由服务器自动发给客户端。

从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性。

Java Web 服务器的消息推送有以下几种方案:

1. 轮询:前端使用ajax不停的发起请求获取想要的数据(最简单也是最容易耗尽服务器资源)。

2. 长连接:HTTP长连接,客户端向服务端发起请求,服务端等有数据了才response,否则一直持有该连接Cometgithub: comet4j 项目,可以直接下载配置jar到tomcat下使用。

3、使用xmpp协议的一种技术,能够做到js中调用服务器的Java方法。

消息推送建议用专业的推送平台,例如:极光。深圳市和讯华谷信息技术有限公司创立于2011年,其团队核心成员来自腾讯、摩根士丹利、豆瓣、Teradata和中国移动等公司。公司总部位于深圳,在北京、上海、广州、成都均设有办公室。

javaweb消息实时推送可以使用GoEasy平台。

操作如下:

到goeasy官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key。

前台实时订阅及接收:需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。通过subscribe的参数 onMessage的回调函数可以实时接收到消息。

前台实时推送:需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。

后台实时推送:调用GoEasy Restful API, 用post方式访问http://goeasy.io/goeasy/publish, 同时还需要带上三个必要参数:

appkey: publish key

channel: 你订阅了的channel

content: 推送内容

GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。订阅什么呢?订阅channel。往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。通过channel我们可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/428562.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-27
下一篇2023-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存