server端推送消息机制

推送技术相关请参加WIKI: https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF

 

场景:

监控系统:后台硬件温度、电压发生变化;
即时通信系统:其它用户登录、发送信息;
即时报价系统:后台数据库内容发生变化;
即时信息系统:微博、说说实时推送

客户端驱动无法满足上述场景要求。可采用以下几种方式

    Ajax轮询:异步响应机制,即通过不间断的客户端 Ajax 请求,去发现服务端的变化。这种方式由于是客户端主动连接的,所以会有一定程度的延时,并且服务器的压力也不小。

   长轮询:原理是客户端发出一个http长连接请求,然后等待服务器的响应,服务器接到请求之后,并不立即发送出数据,而是hold住这个Connecton。这个处理是非阻塞的,所以服务器可以继续处理其他请求。在某个时刻,比如服务器有新数据了,服务器再主动把这个消息推送出去,即通过之前建立好的连接将数据推送给客户端。客户端收到返回。这个时候就可以处理数据,然后再次发起新的长连接。服务器压力一般,实时性很高。Servlet 3.0开始已经支持该技术。sina微博就是使用的原生Servlet 3实现的消息推送。

套接字:可以利用 Flash 的 XMLSocket 类或者 Java 的 Applet 来建立 Socket 连接,实现全双工的服务器推送,然后通过 Flash 或者Applet 与 JavaScript 通信的接口来实现最终的数据推送。但是这种方式需要 Flash 或者 JVM 的支持,同样不太合适于终端用户。

    HTML5的WebSocket:这种方式其实与套接字一样,但是这里需要单独强调一下:它是不需要用户而外安装任何插件的。HTML5 提供了一个 WebSocket 的 JavaScript 接口,可以直接与服务端建立Socket 连接,实现全双工通信,这种方式的服务器推送就是完全意义上的服务器推送了,没有半点模拟的成分,只是现阶段支持 HTML5 的浏览器并不多,而且一般老版本的各种浏览器基本都不支持。不过 HTML5 是一套非常好的标准,在将来,当HTML5 流行起来以后将是我们实现服务器推送技术的不二选择。

 

参考文章:http://blog.csdn.net/majian_1987/article/details/8489488

转载于:https://www.cnblogs.com/guochunyi/p/5728548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能柜台C端代码规范

语法上建议:一、建议尽量使用””代替””上述比较好上述HX0188是一个字符串,用!替代比较好二、引用的组件/插件在当前vue文件内并未使用例:chk_bcip\src\business\common\views\ common-auditwait.vueDevice._$和Utils.AppUtils 都未使用&am…

天才密码 编程_不成为编程天才的5种贡献方式

天才密码 编程安迪莱斯特(Andy Lester)在三月份发布了最初的指南,其中介绍了14种不成为编程天才或摇滚明星而对开源做出贡献的方法 ,我真的很喜欢这个想法。 这就是为什么我决定稍微采纳一下这篇文章,并告诉您如何以及…

华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...

在9月17日,在2020阿里巴巴云栖大会上,阿里云发布了第一台云电脑"无影",极致的简约,一张卡片大小的机器就等于一台电脑了。看到这款电脑的宣传片,真的是极致的未来感,随随便便一块小透明玻璃就是电…

SQL SERVER 2016研究三

2016 SQL SEVER 全程加密程式 column encryption settingEnabled; 重点:需要使用.Net Framework 4.6 新建一个程式如下: 1、创建链接数据库,必选栏位,影响加密。 2、或者在web.config文件数据链接字符串增加如下语句: …

小车故障灯亮显示大全_史上最全汽车故障灯大全,留着一定有用!

大家好,我是汽修小诺,喜欢有关汽车知识的小伙伴请关注我哦,感谢大家!现在有车的朋友越来越多,开车途中难免会遇到汽车故障显示灯亮,从而不知道什么原因,有的朋友不敢开,等修理厂来检…

策略设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …

vscode修改json.maxItemsComputed配置解决提示

由于要测试明细查询打印业务,分页每页显示30行,要打印30页以上的数据,在打印的过程中会出现分页的问题,这里使用仿真工具测试,需要修改mock数据,造数据,超过5000行就有提示了,需要扩…

【面试题系列|前端面试题】前端高频面试题总结(2021年最新版)

面试过不少前端从业者,简历写的平平淡淡,别人会的技能他也都会,看起来什么都掌握一些;有些会请过来当面聊一下,有些就直接拒绝了(如果是公司内要求独立完成项目的岗位,简历里放很多学习时候的DE…

ibatis中的xml配置文件

<?xml version"1.0" encoding"UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" ><sqlMap namespace"EOC_MUSIC"> <t…

mysql 更新 字段 递增_MySQL使用递增变量更新字段

我的一个数据库中有一个名为“ textile_events”的表。mysql> describe textile_events;---------------------------------------------------------| Field | Type | Key | Default | Extra |---------------------------------------------------------| id | int(11) | …

spring定时注解方式定时写到xml里面融合

把spring注解方式的定时写到xml里面&#xff0c;因为定时常常修改在class里面很不方便代码如下 在xlm <beans 里面加入 xmlns:task"http://www.springframework.org/schema/task" xsi:schemaLocation"里面加入 http://www.springframework.org/schema/task …

mysql数据库实训总结_数据库实训报告

实训报告实训课程&#xff1a;JAVA WEB项目实训实训名称&#xff1a;JAVA项目实训综合能力培养 实训地点&#xff1a;中国江苏无锡国家软件园巨蟹座C601 学生姓名&#xff1a;胥康 学号&#xff1a;140703133 指导教师&#xff1a;张志华实训时间&#xff1a;2016年7月22日实训…

观察者设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...

-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟&#xff0c;迁移旧数据到历史表。DELIMITER $$USE dbx$$DROP PROCEDURE IF EXISTS pro_xx$$CREATE PROCEDURE pro_xx()BEGINDECLARE p_oalid INT DEFAULT 0;DECLARE STOP INT DEFAULT 0;DECLARE cur_oalid CURSOR FOR…

震惊!2021年数十个技术领域图谱曝光,包含Golang、区块链、人工智能、架构师等领域学习路线

前言:不知道你是否和我一样,刚开始学习某个技术领域的时候缺乏坚持的动力,没有一个清晰的学习路线,学习的过程中没有人指导,遇到问题没人一起解答,想深入学习某个领域而又无从下手,不知道该从何处学起?这不,你想要的技术图谱来啦。有了这款武功秘籍,不光能开阔视野,…

eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案...

pom文件提示信息&#xff1a; Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has el…

70多套java必练项目,适合小白上手!

导读&#xff1a;这些项目不管是找工作练手&#xff0c;还是公司使用当作模板进一步改进&#xff0c;亦或者是当作毕业设计&#xff0c;都很有借鉴意义&#xff01; 编译器建议使用&#xff1a;IDEA,Myeclipse,eclipse,HB-X等都可以。 数据库建议使用&#xff0c;mysql,oracle,…

mysql mycat 路由规则_Mycat分库路由规则

Mycat分库路由规则发布时间&#xff1a;2020-06-15 16:54:10来源&#xff1a;51CTO阅读&#xff1a;11651作者&#xff1a;lzf05303774一、Mycat分库路由分为连续路由和离散路由。1、连续路由&#xff1a;(1)、常用的路由方式&#xff1a;auto-sharding-long、sharding-by-date…

jsf集成spring_Spring和JSF集成:导航

jsf集成spring我希望这是有关我在Spring和JavaServer Faces之间提供深度集成的努力的一系列博客中的第一篇。 这里提到的所有内容都是“正在进行中的工作”&#xff0c;因此&#xff0c;如果您签出代码&#xff0c;请注意它是一个不断变化的目标。 期待一些粗糙的边缘&#xff…

关于 asp.net 点击确定按钮 获取不到新值问题

点击事件内&#xff0c;可以使用request.form[" kk"] 获取到值&#xff0c;但是this.txt.Text 确实旧值&#xff0c; 尼玛&#xff0c;居然没加isPostBack重新加载了数据 &#xff0c;request 并没有更改&#xff0c;就是这样。转载于:https://www.cnblogs.com/yZDn/…