`

serverpush实现

阅读更多

前段时间做一个Demo,需要在里面实现实时的系统内存、CPU、线程等信息。考虑Ajax的Polling来实现,但发现CPU很高,频繁的Ajax访问,服务器受不了呀。

目前,初步实现push的服务器还不成熟。servlet3.0,Tomcat等有实现,但很麻烦。

幸好08年有DWR的使用经历,DWR3.0的反向功能,让我看到了希望。下面来说说他实现的一个及时聊天吧。

1.导入dwr.jar

2.servlet配置

<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>
			org.directwebremoting.servlet.DwrServlet
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>activeReverseAjaxEnabled</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>

 3.新建一个java后台类

public class TestClass
{
    int i = 0;

    public String testMethod1(String name)
    {
        return "Hello," + name;
    }

    public void send(final String msg)
    {

        Browser.withCurrentPage(new Runnable() {

            public void run()
            {
                ScriptSessions.addFunctionCall("receive", msg);

            }

        });

    }

}

4.编写dwr.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">

<dwr>
	<allow>
		<create creator="new" javascript="testClass"
			scope="application">
			<param name="class" value="dwr.TestClass" />
			<include method="testMethod1" />
			<include method="send" />
		</create>
	</allow>
</dwr>

 5.前段代码的编写

<script src='dwr/interface/testClass.js'></script>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
<body onload=dwr.engine.setActiveReverseAjax(true);>
        <input type="text" id='shuo' />
        <input type="button" value='send' id="btn" />
        <div id="kkk2"></div>
        <script type="text/javascript">
            document.getElementById('btn').onclick = function(){
                var msg = document.getElementById('shuo').value;
                testClass.send(msg);
                document.getElementById('shuo').value='';
            }
            
            function receive(msg){
                var d = document.createElement('div');
                d.innerHTML = msg;
                document.getElementById('kkk2').appendChild(d);
            }
        </script>
</body>

 现在打开多个浏览器测试吧!!!

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    server push

    在基于DWR的Server Push实现中,服务器端会持续监测数据变化,并在有新数据时立即推送到客户端。这个过程通常包括以下步骤: 1. **设置DWR**: 首先,你需要在Java项目中集成DWR框架,通过在web.xml中配置DWR的...

    serverpush聊天室

    总的来说,"ServerPush聊天室"是一个利用DWR技术构建的实时聊天应用,其核心特性是通过ServerPush实现的高效信息传递和点对点的聊天功能。理解和实现这样的系统,对于提升Web应用的用户体验和实时性具有重要意义。

    ASP.NET(C#) ServerPush

    总之,ASP.NET (C#) ServerPush是构建实时Web应用的关键技术,它利用多种底层传输机制实现服务器到客户端的数据实时推送,极大地提升了用户体验。掌握这些知识点对于开发高效、实时的Web应用程序至关重要。

    Android Server Push - MQTT

    在Android平台上实现Server Push技术,MQTT(Message Queuing Telemetry Transport)协议是一个常见的选择。MQTT是一个轻量级的发布/订阅模型的网络协议,主要用于低带宽、高延迟或不可靠的网络环境中,特别适合...

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

    首先,`ServerPush.sln`是一个Visual Studio解决方案文件,它包含了项目的所有配置和依赖关系。当你打开这个文件时,Visual Studio会加载相关的项目和设置,便于开发者进行编译和调试。 `ServerPush.suo`是Visual ...

    web聊天 serverpush servlet实现

    本篇将主要讨论使用Servlet实现的Server Push技术,即服务器端主动向客户端推送数据。 【描述】: 这篇博客(原文链接:https://zw7534313.iteye.com/blog/703114)详细介绍了如何利用Servlet实现一个简单的Web...

    java中的Servlet实现Server_Push技术的聊天室!

    本文将深入探讨如何利用Java中的Servlet实现Server Push技术来创建一个聊天室应用。 ### Servlet与Server Push技术 Servlet是Java平台上的服务器端应用程序接口,它主要用于扩展应用程序服务器的能力,处理来自...

    Server Push入门介绍

    #### 二、Server Push 的实现方式 目前,Server Push 主要有两种实现方式: 1. **需要在浏览器端安装插件的方式**: - 基于**套接口**(Socket)传送信息。 - 使用**RMI**(Remote Method Invocation) 或 **CORBA...

    服务器推送技术Server Push详解

    #### 四、Server Push的技术实现 Server Push技术主要依赖于HTTP协议的一些扩展功能,特别是MIME类型和响应头的特定配置。 - **MIME类型**:为了支持Server Push,HTTP协议引入了特殊的MIME类型,如`multipart/...

    Flex与java Server Push数据

    为了实现实时通信,如聊天应用、股票更新等场景,引入了Server Push技术。 Flex是一款开源的Flash开发框架,主要用于创建富互联网应用程序(RIA)。它允许开发者使用ActionScript语言编写前端界面,并与后端服务器...

    ServerPush(服务器推送)

    在提供的压缩包文件中,"ServerPush"可能是一个实现了服务器推送功能的ASP.NET项目,"项目说明.txt"可能包含了项目的详细说明和使用指南,而"Fsrm.ServerPushChat"可能是一个示例应用,展示了如何使用服务器推送技术...

    serverpush做的webRoom

    综上所述,"serverpush做的webRoom"是一个利用DWR实现服务器推送的Web聊天室应用,其核心是通过服务器推送技术实现实时的点对点聊天功能。项目中的"WebRoom"文件夹包含了实现这一功能所需的所有源代码和资源。在实际...

    asp.net server push长连接 源码示例

    在ASP.NET中实现Server Push,一般采用几种常见的技术策略: 1. **HTTP长轮询(Long Polling)**:客户端发起请求后,服务器并不立即返回,而是保持连接,直到有新数据可用时才将数据发送给客户端并关闭连接。...

    asp.net server push 长连接

    总的来说,ASP.NET Server Push长连接技术是现代Web应用程序实现实时通信的关键技术之一,通过合理选择和实现,可以极大地提升用户体验。在开发过程中,理解各种实现方式的优缺点,以及如何针对具体场景进行优化,...

    Laravel开发-laravel-http2serverpush

    本文将深入探讨 Laravel 开发中的 HTTP/2 服务器推送技术,并介绍如何在 Laravel5 中使用 `laravel-HTTP2ServerPush` 这个中间件来实现这一功能。 首先,让我们理解 HTTP/2 服务器推送的基本概念。在 HTTP/1.x 协议...

    基于 AJAX和Webservice 的长轮询方式ServerPush技术模拟

    为了解决这个问题,开发人员引入了 ServerPush 技术,其中一种常见实现方式就是利用 AJAX 和 Webservice 的长轮询。 **AJAX(Asynchronous JavaScript and XML)** 是一种在无需刷新整个页面的情况下,能够更新部分...

    一个完整的用ajax反转 server push(服务器主动向页面推送数据)技术实现的web聊天室源码

    3. **Server Push**:服务器主动推送技术,通常包括两种主要实现方式:长轮询(Long Polling)和流(Streaming)。在这个项目中,可能采用了长轮询的方式,即服务器接收到客户端请求后并不立即返回,而是保持连接...

    Android Server Push - Urban Airship

    FCM是实现Server Push的关键,它允许开发者通过云平台发送消息到Android设备。Urban Airship则在此基础上提供了更高级的功能和定制化选项,如自定义通知样式、消息分段、深度链接等。 要使用Urban Airship,首先...

Global site tag (gtag.js) - Google Analytics