`
zzjjun0000
  • 浏览: 23499 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HTML5中的服务器‘推送’技术 -Server-Sent Events

 
阅读更多

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);

 

 

分享到:
评论

相关推荐

    基于JPA开发的Server-Sent-Event数据推送

    这样,即使在页面加载后,浏览器也能接收到服务器推送的新数据。 在压缩包中的文件“ServerSent”,可能包含了实现SSE功能的核心代码,比如Controller的实现,Repository的接口,以及可能的实体类定义。这些文件...

    服务端消息推送Server-Sent示例代码

    在IT行业中,服务端消息推送(Server-Sent Events,简称SSE)是一种高效且实时的通信技术,允许服务器主动向客户端发送数据,而无需客户端频繁发起请求。这种单向推送机制在实时应用如股票更新、在线聊天、实时通知...

    浅谈HTML5 服务器推送事件(Server-sent Events)

    服务器推送事件(Server-sent Events)是基于WebSocket 协议的一种服务器向客户端发送事件&数据的单向通讯。目前所有主流浏览器均支持服务器发送事件,当然除了 Internet Explorer 。2333… WebSocket 协议是继HTTP...

    服务器推送技术

    源码在服务器推送技术的实现中扮演着关键角色,因为它涉及到网络协议的解析、数据处理和事件驱动编程。开发者通常会使用如Node.js、Java、Python等支持异步I/O的编程语言来编写服务器端代码,以实现高效的推送逻辑。...

    服务端推技术 - Server-side Push 多示例

    3. **EventSource/SSE(Server-Sent Events)**:这是一种单向的推送机制,服务器可以将事件以文本流的形式持续发送到客户端。与WebSocket相比,SSE更简单,但只能从服务器向客户端推送数据。 在"comet_broadcast.a...

    服务器推送示例-支持IE火狐谷歌等

    在IT行业中,服务器推送是一种技术,它允许服务器主动地向客户端发送数据,而不仅仅是响应客户端的请求。这种技术可以显著提高实时性,特别是在需要实时更新数据的应用场景中,如聊天应用、股票报价、在线游戏等。在...

    HTML5推送django-monitio.zip

    django-monitio 允许你有消息(通知)之后: 可以被保存(存储在数据库中,可以...django-monitio 使用了HTML5中的服务器'推送'技术--Server-Sent Events,可以实时地、动态地推送消息给用户。 标签:django

    .net 服务器推送

    在C# .NET环境中实现服务器推送,有多种方法,如WebSocket、SignalR、Server-Sent Events (SSE)等。下面将详细介绍这些技术: 1. WebSocket: WebSocket提供全双工通信,允许服务器和客户端双向传输数据。在C#中,...

    ServerPush(服务器推送)

    在Web开发中,服务器推送(Server Push)是一种技术,它允许服务器主动将数据发送到客户端,而无需等待客户端的请求。这种机制打破了传统的HTTP协议的请求-响应模型,提高了实时性和交互性。在ASP.NET框架下实现...

    .net实现Server Push(服务器推送)源码

    以下是对标题和描述中涉及的.NET实现Server Push(服务器推送)源码的详细解释: 首先,`ServerPush.sln`是一个Visual Studio解决方案文件,它包含了项目的所有配置和依赖关系。当你打开这个文件时,Visual Studio...

    逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现

    Server-sent events(SSE)是一种用于实现服务器到客户端的单向通信的协议。使用SSE,服务器可以向客户端推送实时数据,而无需客户端发出请求。 SSE建立在HTTP协议上,使用基于文本的数据格式(通常是JSON)进行通信...

    HTML5 服务器发送事件(Server-Sent Events)

    Server-Sent Events是HTML5引入的一个强大特性,它简化了实时数据推送的实现,减少了不必要的网络通信,提高了实时应用的效率。对于需要实时更新的Web应用,Server-Sent Events是一个理想的选择。

    html5服务器推送_动力节点Java学院整理

    为了解决这个问题,HTML5引入了服务器推送事件(Server-Sent Events,SSE)和WebSocket两种技术。 WebSocket是一种基于TCP协议的双向通信规范,它允许服务器和客户端之间持续保持连接,实现低延迟的数据交换。然而...

    server-sent-events:使用Spring WebFlux框架和React式Kafka的WebFlux服务器,该服务器公开了REST API,以使客户端发出安全的HTTP请求。 在客户端和Web Flow服务器之间建立安全连接后,除非有必要,否则它将使用来自Kafka主题的消息并异步推送数据,而无需关闭与客户端的连接

    一旦在客户端和Web Flow服务器之间建立了安全连接,除非有必要,否则它将使用来自Kafka主题的消息并异步推送数据,而无需关闭与客户端的连接。 使用Reactive Kafka看一下Spring WebFlux上的这个。

    基于服务器推送技术建立在线交流平台的探讨与实现

    服务器推送技术(Server Pushing)的核心在于改变信息流动的方向,由传统的“拉”式(Pull)变为“推”式(Push),即服务器主动向客户端推送信息。这一技术的应用不仅提高了信息传递的效率和稳定性,还能更好地支持...

    asp.net 服务器推技术源码

    3. Server-Sent Events (SSE):SSE允许服务器单向向客户端推送事件,但只支持服务器到客户端的通信,不支持双向交互。 4. 帧套帧技术(IFrame,AJAX):利用IFrame或者AJAX的定时刷新机制,服务器在接收到请求后...

Global site tag (gtag.js) - Google Analytics