HTML5中的服务器‘推送’技术 -Server-Sent Events :http://songyishan.iteye.com/blog/1003466
html5服务器推送技术DEMO:http://viralpatel.net/blogs/html5-server-sent-events-java-servlets-example/
java 代码:
package com.forms; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MovementEventSource extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/event-stream"); // encoding must be set to UTF-8 response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); for (int i = 0; i < 10; i++) { writer.write("data: " + System.currentTimeMillis() + "\n\n"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } writer.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(req, resp); } }
web.xml端配置:
<servlet> <servlet-name>sendServlet</servlet-name> <servlet-class>com.forms.MovementEventSource</servlet-class> </servlet> <servlet-mapping> <servlet-name>sendServlet</servlet-name> <url-pattern>/testSendServlet.do</url-pattern> </servlet-mapping>
jsp页面代码:
<body> Time: <span id="foo"></span> <br><br> <button onclick="start()">Start</button> <script type="text/javascript"> function start() { var eventSource = new EventSource("testSendServlet.do"); eventSource.onmessage = function(event) { document.getElementById('foo').innerHTML = event.data; }; } start(); </script> </body>
复杂的html5服务器推送技术:
java代码:
package net.viralpatel.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/event-stream"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); int upVote = 0; int downVote = 0; for (int i = 0; i < 20; i++) { upVote = upVote + (int) (Math.random() * 10); downVote = downVote + (int) (Math.random() * 10); writer.write("event:up_vote\n"); writer.write("data: " + upVote + "\n\n"); writer.write("event:down_vote\n"); writer.write("data: " + downVote + "\n\n"); writer.flush(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } writer.close(); } }
jsp页面代码:
var eventSource = new EventSource("HelloServlet"); eventSource.addEventListener('up_vote', function(event) { document.getElementById('up').innerHTML = event.data; }, false); eventSource.addEventListener('down_vote', function(event) { document.getElementById('down').innerHTML = event.data; }, false);
相关推荐
这样,即使在页面加载后,浏览器也能接收到服务器推送的新数据。 在压缩包中的文件“ServerSent”,可能包含了实现SSE功能的核心代码,比如Controller的实现,Repository的接口,以及可能的实体类定义。这些文件...
在IT行业中,服务端消息推送(Server-Sent Events,简称SSE)是一种高效且实时的通信技术,允许服务器主动向客户端发送数据,而无需客户端频繁发起请求。这种单向推送机制在实时应用如股票更新、在线聊天、实时通知...
服务器推送事件(Server-sent Events)是基于WebSocket 协议的一种服务器向客户端发送事件&数据的单向通讯。目前所有主流浏览器均支持服务器发送事件,当然除了 Internet Explorer 。2333… WebSocket 协议是继HTTP...
源码在服务器推送技术的实现中扮演着关键角色,因为它涉及到网络协议的解析、数据处理和事件驱动编程。开发者通常会使用如Node.js、Java、Python等支持异步I/O的编程语言来编写服务器端代码,以实现高效的推送逻辑。...
3. **EventSource/SSE(Server-Sent Events)**:这是一种单向的推送机制,服务器可以将事件以文本流的形式持续发送到客户端。与WebSocket相比,SSE更简单,但只能从服务器向客户端推送数据。 在"comet_broadcast.a...
在IT行业中,服务器推送是一种技术,它允许服务器主动地向客户端发送数据,而不仅仅是响应客户端的请求。这种技术可以显著提高实时性,特别是在需要实时更新数据的应用场景中,如聊天应用、股票报价、在线游戏等。在...
django-monitio 允许你有消息(通知)之后: 可以被保存(存储在数据库中,可以...django-monitio 使用了HTML5中的服务器'推送'技术--Server-Sent Events,可以实时地、动态地推送消息给用户。 标签:django
在C# .NET环境中实现服务器推送,有多种方法,如WebSocket、SignalR、Server-Sent Events (SSE)等。下面将详细介绍这些技术: 1. WebSocket: WebSocket提供全双工通信,允许服务器和客户端双向传输数据。在C#中,...
在Web开发中,服务器推送(Server Push)是一种技术,它允许服务器主动将数据发送到客户端,而无需等待客户端的请求。这种机制打破了传统的HTTP协议的请求-响应模型,提高了实时性和交互性。在ASP.NET框架下实现...
以下是对标题和描述中涉及的.NET实现Server Push(服务器推送)源码的详细解释: 首先,`ServerPush.sln`是一个Visual Studio解决方案文件,它包含了项目的所有配置和依赖关系。当你打开这个文件时,Visual Studio...
Server-sent events(SSE)是一种用于实现服务器到客户端的单向通信的协议。使用SSE,服务器可以向客户端推送实时数据,而无需客户端发出请求。 SSE建立在HTTP协议上,使用基于文本的数据格式(通常是JSON)进行通信...
Server-Sent Events是HTML5引入的一个强大特性,它简化了实时数据推送的实现,减少了不必要的网络通信,提高了实时应用的效率。对于需要实时更新的Web应用,Server-Sent Events是一个理想的选择。
为了解决这个问题,HTML5引入了服务器推送事件(Server-Sent Events,SSE)和WebSocket两种技术。 WebSocket是一种基于TCP协议的双向通信规范,它允许服务器和客户端之间持续保持连接,实现低延迟的数据交换。然而...
一旦在客户端和Web Flow服务器之间建立了安全连接,除非有必要,否则它将使用来自Kafka主题的消息并异步推送数据,而无需关闭与客户端的连接。 使用Reactive Kafka看一下Spring WebFlux上的这个。
服务器推送技术(Server Pushing)的核心在于改变信息流动的方向,由传统的“拉”式(Pull)变为“推”式(Push),即服务器主动向客户端推送信息。这一技术的应用不仅提高了信息传递的效率和稳定性,还能更好地支持...
3. Server-Sent Events (SSE):SSE允许服务器单向向客户端推送事件,但只支持服务器到客户端的通信,不支持双向交互。 4. 帧套帧技术(IFrame,AJAX):利用IFrame或者AJAX的定时刷新机制,服务器在接收到请求后...