WEB消息推送-comet4j
一、comet简介:
comet :基于 HTTP长连接的“服务器推”技术,是一种新的 Web 应用架构。基于这种架构开发的应用中,服务器端会主动以异步的方式向客户端程序推送数据,而不需要客户端显式的发出请求。Comet 架构非常适合事件驱动的 Web 应用,以及对交互性和实时性要求很强的应用,如股票交易行情分析、聊天室和 Web 版在线游戏等。
二、comet4j功能特性
- 推送消息广播。
- 推送定向消息。
- 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。
- 消息缓存机制,确保长轮询工作模式下不丢失消息。
- 客户端正常下线,服务端可立即感知。
- 客户端异常停止工作,服务端可定时检查并感知。
- 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。
三、comet4j框架特性
- 独立小巧,不依赖于第三方包。
- 与应用紧密集成,无需独立应用或服务器。
- 与Session无关的连接机制,为开发人员提供最大程度的功能可控性。
- 面向事件编程,客户端与服务器端均为事件驱动开发模式,提供了良好的可扩展性机制。
- 各项性能参数均可配置。
- 支持多种主流浏览器,并支持Air应用环境。
四、comet4j实战应用
(1)下载comet4j所需要的jar包和js文件。具体下载地址:http://code.google.com/p/comet4j/
(2)新建web项目:如图 项目demo下载地址:http://pan.baidu.com/s/1hqsUpzI
(3)在demo中可以发现,index.jsp中所用的CHANNEL必须与Comet4j.java中设置的CHANNEL相一致,在整个推送中,
采用的是单例模式,所以开发人员不必担心它会消耗大量的内存。
(4)comet4j开发简单,只需参考其客户端和服务端的API文档,做出你想要的推送功能应该是没有问题的。
第二种:大家比较熟悉
一.WebSocket简单介绍 |
一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。$ j6 s6 P/ d( K- G' m 我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便,如带有即时通信、实时数据、订阅推送等功能的应 用。在WebSocket规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法:轮询(polling)和Comet技术。其实后者本质上也是一种轮询,只不过有所改进。 轮询是最原始的实现实时Web应用的解决方案。轮询技术要求客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动。明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。 Comet技术又可以分为长轮询和流技术。长轮询改进了上述的轮询技术,减小了无用的请求。它会为某些数据设定过期时间,当数据过期后才会向服务端发送请求;这种机制适合数据的改动不是特别频繁的情况。流技术通常是指客户端使用一个隐藏的窗口与服务端建立一个HTTP长连接,服务端会不断更新连接状态以保持HTTP长连接存活;这样的话,服务端就可以通过这条长连接主动将数据发送给客户端;流技术在大并发环境下,可能会考验到服务端的性能。 这两种技术都是基于请求-应答模式,都不算是真正意义上的实时技术;它们的每一次请求、应答,都浪费了一定流量在相同的头部信息上,并且开发复杂度也较大。. C w( i) E4 k. P, m; g 伴随着HTML5推出的WebSocket,真正实现了Web的实时通信,使B/S模式具备了C/S模式的实时通信能力。WebSocket的工作流程是这 样的:浏览器通过javaScript向服务端发出建立WebSocket连接的请求,在WebSocket连接建立成功后,客户端和服务端就可以通过 TCP连接传输数据。因为WebSocket连接本质上是TCP连接,不需要每次传输都带上重复的头部数据,所以它的数据传输量比轮询和Comet技术小 了很多。本文不详细地介绍WebSocket规范,主要介绍下WebSocket在Java Web中的实现。# k- L0 {# i. k JavaEE 7中出了JSR-356:Java API for WebSocket规范。不少Web容器,如Tomcat,Nginx,Jetty等都支持WebSocket。Tomcat从7.0.27开始支持 WebSocket,从7.0.47开始支持JSR-356,下面的Demo代码也是需要部署在Tomcat7.0.47以上的版本才能运行。# W" f) D, @: u) Y0 L' ~ 二、WebSocket协议介绍 四、代码实现以及需求 1、项目需要,定时向所有在线用户推送一个广告或是推送一个通知之类的(比如服务器升级,请保存好手头工作之类的)。: f |, D6 R. _0 ~3 d WebSocketConfig:
复制代码 SystemWebSocketHandler:
复制代码 信息输入 index.html:- \0 z& k; w5 d$ U1 ~( ~* T
复制代码 6 q0 F$ y& l t8 y" a( U( I& n
复制代码 9 \; ^. D: M; Y% o5 B2 [ 这时查看后台 会有以下信息 说明 引入成功。# T; \, y% L c+ d1 ~% U 然后在打开页面 index.html 输入以下内容 点击开始即可。/ d% h3 B% d: \9 E 如果在网站出现一下提示说明配置成功,这时候所有网站登录用户都可以收到此信息。, N5 ^, y) H4 C2 ]3 c* } |
转载于:https://www.cnblogs.com/huojg-21442/p/7090683.html
WEB消息推送-comet4j相关推荐
- WEB消息推送—GoEasy
web实时推送的技术在大多数项目里面都会用到,尤其是一些实时性要求高的项目,关于这方面的实现技术有许多,类似于webscoket.dwr.comet4j和netpush等等,其中在以往的篇幅里我也介绍 ...
- SSE(Server-sent Events)实现Web消息推送(SpringBoot)
本文参考自: Web消息推送之SSE_魅Lemon的博客-CSDN博客_sse推送 [IT老齐237]超好用Web服务端主动推送技术SSE_哔哩哔哩_bilibili 1.Web消息推送简介 短轮询 ...
- php实现Web消息推送框架
文章来源:http://www.workerman.net/web-sender web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接 ...
- php socket laravel,Laravel整合PHPSocket.Io实现web消息推送
PHPSocket.IO ,PHP跨平台实时通讯框架 PHPSocket.IO是 PHP 版本的Socket.IO服务端实现,基于workerman开发,用于替换node.js版本Socket.IO服 ...
- SSM项目使用GoEasy 实现web消息推送服务
一.背景 之前项目需要做一个推送功能,最开始我用websocket实现我的功能.使用websocket的好处是免费自主开发,但是有几个问题:1)浏览器的兼容问题,尤其是低版本的ie:2)因为是推送 ...
- Web消息推送之SSE
文章目录 一.消息推送简介 1.消息推送介绍 2.几种方式介绍 二.SSE原理介绍 1.SSE基础概念 2.SSE特点 3.SSE与WebSocket异同 三.SSE推送实现 1.概述 1.1 使用S ...
- 基于workerman实现的web消息推送站内信功能
流程说明 使用 web-msg-sender 作为 服务器监听程序. 客户端(浏览器)通过websocket连接 服务器监听程序. 服务器应用程序(后端) 通过curl访问 服务器监听程序,将需要推送 ...
- 关于 Web消息推送系统 web-msg-sender 配置https 协议
前几天做了一个语音播报功能,本地测试ok,但是上线要求https协议费了点时间 1.启动失败情况出现如下错误 Waring stream_socket_server has been disabled ...
- Web 实时消息推送详解
title: Web 实时消息推送详解 category: 系统设计 head: meta name: keywords content: 消息推送,短轮询,长轮询,SSE,Websocket,MQT ...
最新文章
- 知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞
- 二手轻型载货车报价图片_别买贵了,老陈带你走进二手iPhone的大本营:深圳飞扬市场...
- 2021 icme_重磅 | 2021年U.S. News 全美院校排名发布,疫情之下,排名大洗牌?!
- pytorch 正向与反向传播的过程 获取模型的梯度(gradient),并绘制梯度的直方图
- aliyun centos6 安装mysql_阿里云CentOS6.8安装MySQL5.6
- Go语言基础之4--流程控制
- filco蓝牙不好用_「原创」开箱 FILCO 斐尔可 蓝牙双模键盘+更换键帽
- centos 7 vs centos6 的不同
- 程序员降薪求职到底该不该?
- 添加鼠标右键菜单项(EditPlus为例)
- Presentation Prompter for Mac(屏幕提词器)
- “英伦配”收视牛过本山,网管软件如何配奇兵
- Mysql(8)_存储引擎之InnoDB
- 什么是多线程,锁,死锁,怎么避免死锁(转)
- 手写笔记软件评测Notability、GoodNotes、MarginNote、OneNote
- uniapp-登录界面风格-001
- gcc/g++编译错误Assembler Error
- Spyder窗口布局调整
- 知乎 | 大家都见过哪些让你虎躯一震的代码?
- 蓄水池采样算法的python实现_蓄水池采样算法-Reservoir Sampling
热门文章
- 企业上市上市央企大面积亏损折射出啥弊端?
- myeclipse 8.5 安装jbpm3.2开发插件
- SYN攻击原理以及检测防范技术
- Mr.J---重拾Ajax(一)--XMLHttpRequest
- Devexpress Chart series 点击时获取SeriesPoint的值
- java笔记--重定向输出流实现程序输出到日志
- JavaScript表单序列化的方法详解
- NSArray与NSSet的区别
- hdu 2188巴什博弈
- Python异常:TypeError: a bytes-like object is required, not 'str'