`
gavin
  • 浏览: 83292 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

APE(Ajax Push Engine)示例

阅读更多
网站上介绍APE,支持多种方式Push,支持的并发高,还开源,所以试用看看。示例场景:
  • FeedServer:每两秒产一次数据,并发给所有连接的客户端
  • APEserver:作为客户端连到FeedServer,作为服务器把接到的数据发送到浏览器
  • 应用页面:发布在nginx上,建立浏览器到APEserver的长连接

产生模拟数据的FeedServer以java实现,会监听8080端口,有客户端连上来,就隔两秒给它发一次数据,数据是json格式。
{"symbol":"CVX","name":"Chevron Corp New","low":58,"high":62,"open":58,"last":62,,"date":"2009-12-28 14:33:33"}
代码是分别把开源的netty和blazeds的例子改一下得来的,运行主程序类EchoServer。代码下载

APE可以用js写扩展模块,这里用js创建socket连接到FeedServer,代码如下:
var socket;
//创建一个新命令用于测试,页面将发送'getst'命令
Ape.registerCmd('getst', true, function(params, infos) {
	
	var chan = Ape.getChannelByPubid(params.pipe); //得到用户的Channel
	if(socket) {//已经开始写了就退出
		socket.write("already exsit.\n");//可以从FeedServer控制台看到发送的内容
		return;
	}
	//建立到FeedServer的连接
	[b]socket = new Ape.sockClient(8080, "192.168.0.1", {flushlf: true});[/b]
	socket.onConnect = function() {
		Ape.log("We are connected !");
		socket.write("ape say Hello\n");
	}
	//接收FeedServer发送的数据
	socket.onRead = function(data) {
		Ape.log("Data : " + data);
		if (chan) {
			//向Channel里发送数据,所有join用户都能收到
			chan.pipe.sendRaw('CUSTOM_RAW', JSON.parse(data), {'from': 'sserver'}); 
		} else {
			return ['109', 'UNKNOWN_PIPE'];
		}
	}
	socket.onDisconnect = function() {
		Ape.log("Gone !");
	}
	return 1;
});

如果不想建立一个新js文件,可以把它放在ape自带示例move.js文件里。如果是用deb包安装的,文件在/var/ape/examples目录下。

示例页面放到/usr/local/nginx/html/ape-jsf/demos目录下:
<html>
    <head>  
        <!-- Load APE Client -->
	<script type="text/javaScript" src="../Clients/mootools-core.js"></script>
	<script type="text/javaScript" src="../Clients/MooTools.js"></script>
	<script type="text/javaScript" src="config.js"></script>
    </head> 
    <body>
	<div id="sp" width="100%"></div>
        <script type="text/javaScript">
            var client = new APE.Client(); 
            client.load(); 
            client.addEvent('load', function() {
                client.core.start({"name":prompt('Your name?')});
            }); 
            // Listen to the ready event to know when your client is connected
            client.addEvent('ready', function() {
                console.log('Your client is now connected');
                //1) join 'testChannel'
                client.core.join('testChannel'); 
                //2) Intercept multiPipeCreate event
                client.addEvent('multiPipeCreate', function(pipe, options) {
                //3) Send the message on the pipe
                pipe.send('Hello world!');
		//发关命令
		pipe.request.send('getst', {'pipe': 'testChannel'});
                    console.log('Sending Hello world');
                }); 
                //接收数据
                client.onRaw('CUSTOM_RAW', function(raw, pipe) {
					var cell1=document.getElementById("sp");
					cell1.innerHTML=JSON.stringify(raw.data);
                });
            });
    </body>
</html>

正常的话,浏览页面可以看到json格式的数据在不断变化。可以测试下APE.Config.transport = 1; 记得改了js要清浏览器缓存。IE不支持XHRStreaming,服务器端js对象的API没有详细文档,不想继续测试别的功能了,以后有机会再说吧。

参考:
http://ape-test.local/ape-jsf/Tools/Check/检查APE是否正常工作,可能需要以下内容。
nginx加上:
location ^~ /ape-jsf/Clients/MooTools.js {
            root   html;
            error_page 405 =200 /ape-jsf/Clients/MooTools.js;
}
location ^~ /ape-jsf/Demos/config.js {
            root   html;
            error_page 405 =200 /ape-jsf/Demos/config.js;
}
location ^~ /ape-jsf/Source/Core/APE.js {
            root   html;
            error_page 405 =200 /ape-jsf/Source/Core/APE.js;
}
APE本机测试配置config.js:
APE.Config.baseUrl = 'http://ape-test.local/ape-jsf'; //APE JSF
APE.Config.domain = 'auto';
APE.Config.server = 'ape.ape-test.local:6969'; //APE server URL
本机hosts文件
192.168.0.6 ape-test.local
192.168.0.6 ape.ape-test.local
192.168.0.6 0.ape.ape-test.local
192.168.0.6 1.ape.ape-test.local
......开的浏览窗口越多要配的越多
分享到:
评论

相关推荐

    APE 示例 ape_example_e4-collision_detection.zip

    本篇将围绕“ape_example_e4-collision_detection.zip”这个压缩包,详细探讨APE(ActionScript Physics Engine)如何在AS3(ActionScript 3)中实现高效的碰撞检测。 首先,我们要了解什么是APE。APE是一个基于...

    APE_Server:Ajax 推送引擎

    猿服务器APE 是专为 Ajax Push 设计的全功能开源解决方案。 它包括一个彗星服务器和一个 Javascript 框架。 APE 允许将任何类型的实时数据流传输到 Web 浏览器,而无需在客户端安装任何东西。要求要运行 APE 服务器...

    APE音频在 STM32嵌入式下的解码库 ape-decode

    标题中的“APE音频在STM32嵌入式下的解码库ape-decode”指的是一个专为STM32微控制器设计的、用于处理APE音频格式的解码库。这个库允许在资源有限的嵌入式环境中播放高质量的无损音频。 APE(Monkey's Audio)是一...

    APE、FLAC插件APE Plugin for Nero

    **APE和FLAC格式简介** 在数字音频领域,APE和FLAC是两种常见的无损音频压缩格式。无损意味着在压缩音频文件时保留了原始音频数据的所有细节,解压缩后可以完全恢复到原始质量,与CD音质无异。与有损格式(如MP3)...

    flash物理引擎APE小实例

    在本文中,我们将深入探讨基于Flash的ActionScript 3(AS3)物理引擎——APE(Actionscript Physics Engine),以及如何通过实例应用它。这个压缩包包含了一些关键文件,包括源代码示例、文档和一个测试项目,让我们...

    APE as3 物理引擎

    APE (ActionScript Physics Engine) 是一款基于ActionScript 3(AS3)开发的2D物理引擎,主要用于Flash平台的游戏开发和其他需要实时物理模拟的应用。0.5a版是该引擎的一个稳定版本,提供了一系列基础的物理特性,如...

    CANape -数据分析

    CANape是一款由Vector Informatik GmbH开发的专业汽车诊断、标定和数据分析工具,尤其在CAN(Controller Area Network)网络的测试和调试中扮演着重要角色。CANape的强大之处在于其全面的功能,包括实时数据采集、...

    CANApe培训 CANApe培训

    ### CANape培训知识点详解 #### 一、CANApe概述 **CANApe**是一款由HiRain Technologies开发的专业工具,主要用于汽车电子控制单元(ECU)的标定、测量与诊断工作。它能够帮助工程师们高效地进行ECU参数测量与标定...

    Matlab Simulink在CANape中的应用

    Matlab Simulink是一款集成开发环境,广泛应用于多域仿真和基于模型的设计,而CANape则是一款广泛应用于汽车电子领域的数据采集与标定软件。本文介绍了如何在CANape中集成使用Matlab Simulink模型,并提供了一些具体...

    CANape教程:从入门到精通

    - **编写示例脚本**:演示如何利用CASL实现自动化测试流程。 - **调试与优化**:提供调试工具帮助开发者查找并修正错误代码。 **(9)All about Comments 标签用法** - **注释类型**:学习如何添加不同类型的注释...

    Matlab和CANape联调

    Matlab和CANape联调 Matlab和CANape联调是指将Matlab编程语言与CANape测量和calibration工具集成,以实现对汽车电子控制单元(ECU)的测量、calibration和诊断。这种集成能够将Matlab的强大计算能力与CANape的测量...

    CANape_Exercises.zip_CANape DAQ_CANape DAQ功能_CANapeFault.dmp_Ca

    8. **CANapeFault.dmp**:这个文件可能是CANape故障模拟的示例或日志文件,用户可以通过分析它来学习如何在CANape中设置和触发故障条件。 在“CANape_Exercises”这个子文件夹中,可能包含了若干练习项目,涵盖从...

    基于CANAPE的Panel设计(一)--button

    在汽车软件开发领域,CANAPE(Connected Automotive Software Platform for Efficient Development)是一个广泛使用的平台,它为车载信息娱乐系统和驾驶舱电子设备提供了一个集成的开发环境。本篇将聚焦于CANAPE中的...

    canape 发送自定义can/xcp报文demo

    CANape是一款专业的CAN(Controller Area Network)和XCP(Calibration Protocol)数据分析工具,广泛应用于汽车电子、自动化和测试领域。XCP是一种高效、实时的通信协议,用于车辆ECU(Electronic Control Unit)的...

    CANape软件编程语言CASL 语法手册

    CANape软件编程语言CASL(Calculation and Scripting Language)是一种用于CANape环境中的脚本语言,用于实现自动化测试、数据分析以及车辆网络诊断等任务。该语言结合了C语言的一些特性,但又具有其独特的语法和...

    直接切割整轨APE为分轨的软件

    标题中的“直接切割整轨APE为分轨的软件”指的是一个工具或应用程序,它能够将整个APE(Monkey's Audio)格式的音乐文件分割成单独的音轨。这种软件通常用于处理那些包含多首歌曲的单个APE文件,使得用户可以方便地...

    使用CANAPE脚本script周期性发送报文.zip

    在压缩包文件"使用CANAPE脚本script周期性发送报文"中,很可能包含了一个示例脚本或者教程文档,通过阅读和理解这些内容,你可以更好地掌握如何实际操作。请根据提供的资源,结合CANAPE用户手册,逐步实践每个步骤,...

    如何在CANape中收发CAN报文

    CANape是Vector Informatik GmbH开发的一款用于测量、校准和诊断ECU(电子控制单元)的软件工具。本文将详细介绍如何在CANape中设置和管理CAN报文的收发操作。 首先,要在CANape中进行CAN报文的发送和接收,第一步...

    APE转换MP3

    标题中的“APE转换MP3”指的是将音频文件格式从APE转化为MP3的过程。这涉及到音频编码和解码技术,以及音频格式之间的转换。 首先,我们要理解APE和MP3这两种音频格式的区别。APE是一种无损音频压缩格式,由Monkey'...

Global site tag (gtag.js) - Google Analytics