WEB即时通讯-WEB消息推送-服务器推送以及使用goeasy第三方服务快速实现WEB服务器端实时推送

一、WEB即时通讯-WEB消息推送-服务器推送

    通常Web开发都是客户端发起请求,服务端响应然后结束,WEB即时通讯,WEB消息推送,服务器推送则是实现服务器主动向客户端发起数据传输,这些在服务器异步处理业务后对客户的通知时应用需求较普遍,常用的方法有三种:

1.普通的http方案

        使用AJAX 轮询(Polling)去服务器查询是否有新消息,虽然方法简单粗暴,但也确实是能解决问题的办法,对于一些请求量不大的公司也是可以考虑的。

2.优化的http方案

        基于(Long-Polling)的comet技术(web技术)的解决方案:客户端通过comet服务拉取消息,然后服务端hold住连接检查有无待接收的消息,如果有立即返回给app端,如果没有则把当前http请求挂起等待比如25秒,在这25秒内如有消息,服务端第一时间将消息返回给客户端。

3.socket解决方案

        客户端通过socket与服务端通信,现在最优的方案,2011年,WebSocket被IETF定为标准RFC 6455,WebSocket API也被W3C定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。目前比较常用的服务端socket解决方案有nodejs,swoole,workerman等,也有很多基于此开发的第三方服务,使用起来非常方便,比如goeasy。

二、使用goeasy第三方服务快速实现WEB服务器端实时推送

    goeasy是一个基于websocket技术专门负责做推送服务的第三方,可以轻松快速实现服务器端主动向客户端发起数据传输,可以大大简化服务端的开发工作。goeasy的实现原理也很简单,我们在WEB端嵌入一段goeasy的JS代码,用户在请求到我们的WEB服务器返回的http结果后执行js代码请求goeasy,这样goeasy就为客户端进行了身份标记并保持了连接(如果关闭浏览器则就会断掉),然后我们的WEB服务器向goeasy发送消息指定推给哪些用户(每个用户都有身份标记,可以是多个用户同一个标记),然后就把工作交给goeasy了,它会负责把这个消息发送给所有未中断的客户端,并在goeasy的后台中有详细的统计数据。

使用方法如下:

第1步:到goeasy官网去注册 https://center.goeasy.io/cn/account/form

第2步:创建免费应用,选择区域以及输入应用名称。

第3步:取得创建应用的appkey,如下图,从goeasy上可以看到有两个key,一个是subscribe key,一个是Common key。Common 既可以发送消息或也可以订阅channel来接收消息,subscribe key只能用来订阅channel来接收消息,这个subscribe key就是用于http源代码js中的,因为不能暴露用于推送的appkey,而Common key则是我们在服务端开发时调用goeasy进行推送时使用的key。

第4步:相关php代码和js代码如下:

如下是html和js代码

#http中的javascript代码
<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>
<script type="text/javascript">
    var goeasy = new GoEasy({
        #在goeasy后台取得的Subscribe key
        appkey: 'BS-944da8b4be8247bb97d28dec7cf3e386'
    });
    goeasy.subscribe({
        channel: '04007cn',
        onMessage: function(message){
            alert('您好:'+message.content);
        }
    });
</script>

如下为PHP代码:

#php代码如下
function sendGoeasyNotice()
{
    $uri = "http://goeasy.io/goeasy/publish";
    $data = [
        'appkey'  => "BC-84c43a78f6784b4e8977aa1f0b27ad42",
        #指定和js中一样的channel
        'channel' => "04007cn",
        'content' =>"测试推送一个消息"
    ];
    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $uri );
    curl_setopt ( $ch, CURLOPT_POST, 1 );
    curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
    $return = curl_exec ( $ch );
    curl_close ( $ch );
    print_r($return);
}
sendGoeasyNotice();

        最后使用测试,先请求含有javascript的http页面,打开后再执行php代码,这时在之前的http页面上就会弹出信息框。如下图:

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用goeasy与Java实现web应用有以下步骤: 1. 配置开发环境:确保已经正确安装Java开发工具箱(JDK)和集成开发环境(IDE),比如Eclipse、IntelliJ IDEA等。 2. 创建Java Web项目:在IDE中新建一个Java Web项目,选择合适的项目类型和配置。 3. 导入goeasy库:从官方网站或Maven中央仓库下载最新版本的goeasy Java库,然后将其导入到项目中。 4. 创建Servlet:在项目中创建一个Servlet类,这是Java Web应用的处理请求和响应的主要逻辑实现。可以通过继承HttpServlet类或实现Servlet接口来创建Servlet类。 5. 配置Servlet映射:在项目的web.xml文件中配置Servlet的映射路径,使得当Web服务器接收到相应的请求时,能够正确地调用Servlet类进行处理。 6. 编写业务逻辑:在Servlet中编写相应的业务逻辑,比如处理用户请求、查询数据库、生成动态页面等。 7. 使用goeasy发送消息:在业务逻辑中,调用goeasy库提供的API发送消息。首先创建一个goeasy实例,并配置相应的参数,如Appkey和Appsecret。然后通过调用实例的publish方法,将要发送的消息发布到指定的频道或主题。 8. 接收消息并处理:在客户端页面中,使用goeasy库的订阅功能,订阅相应的频道或主题。当有消息到达时,goeasy会通过回调函数返回消息内容,可以根据需要进行相应的处理,比如更新页面数据、展示提示信息等。 9. 部署和测试:完成代码编写后,将Java Web项目部署到Web服务器上进行测试。在浏览器中输入相应的URL,触发Servlet处理请求并使用goeasy发送和接收消息。根据测试结果对代码进行优化和调试。 总的来说,使用goeasy与Java实现Web应用需要创建Servlet、配置映射、编写业务逻辑,通过goeasy实现消息的发送和接收。这样可以实现实时通信、消息推送等功能,为Web应用增加更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值