代码如下:
client:
FLASH
var nc:NetConnection = new NetConnection();
nc.client = this;
nc.objectEncoding = flash.net.ObjectEncoding.AMF0;//注意这句话(不加的话 同步事件没有被触发)
nc.connect("rtmp://192.168.1.109/wxgameflashserver");
var so:SharedObject = SharedObject.getRemote("gamemsg", nc.uri, false);
so.connect(nc);
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
so.addEventListener(SyncEvent.SYNC,newMessageHandler);
sendButton.addEventListener(MouseEvent.CLICK,sendMessage);
function netStatusHandler(Evt:NetStatusEvent){
if (Evt.info.code == "NetConnection.Connect.Success") {
history.appendText("连接成功!");
}
if (Evt.info.code == "NetConnection.Connect.Failed") {
history.appendText("连接失败!");
}
}
function newMessageHandler(event:SyncEvent):void{
var infoObj:Object=event.changeList;
for (var i = 0; i<infoObj.length; i++) {
var info = infoObj[i];
if (info.name != undefined) {
if(info.code=="change"){
history.appendText(so.data.chatMessage + "\n");
}
}
}
}
function sendMessage(event:MouseEvent):void{
so.setProperty("chatMessage",message.text);
so.setDirty("chatMessage");
history.appendText(message.text + "\n");
message.text="";
}
Server:
java
Application.java
package com.zhangchao;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IScope;
import org.red5.server.api.so.ISharedObject;
public class Application extends ApplicationAdapter{
private ISharedObject iso;
private String chatMessage = "" ;
public String getChatMessage() {
return chatMessage;
}
public void setChatMessage(String chatMessage) {
this.chatMessage = chatMessage;
}
@Override
//该方法初始化时执行一次
public synchronized boolean start(IScope scope) {
this.createSharedObject(scope, "gamemsg", true);
iso = this.getSharedObject(scope, "gamemsg",false);// persistent==false
iso.beginUpdate();
iso.setAttribute("chatMessage", chatMessage);
iso.endUpdate();
return super.start(scope);
}
}
=================================================\
red5-web.properties
webapp.contextPath=/wxgameflashserver
webapp.virtualHosts=*,localhost,127.0.0.1,192.168.1.109
=================================================\
red5-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/red5-web.properties" />
</bean>
<bean id="web.context" class="org.red5.server.Context"
autowire="byType" />
<bean id="web.scope" class="org.red5.server.WebScope"
init-method="register">
<property name="server" ref="red5.server" />
<property name="parent" ref="global.scope" />
<property name="context" ref="web.context" />
<property name="handler" ref="web.handler" />
<property name="contextPath" value="${webapp.contextPath}" />
<property name="virtualHosts" value="${webapp.virtualHosts}" />
</bean>
<bean id="web.handler"
class="com.zhangchao.Application"
singleton="true" />
<!-- this will support calling methods through "myhandler.<methodName>"
<bean id="myhandler.service"
class="the.path.to.my.ServiceHandler"
singleton="true" />-->
</beans>
===================================================\
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>My sample Red5 application</display-name>
<context-param>
<param-name>globalScope</param-name>
<param-value>default</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/red5-*.xml</param-value>
</context-param>
<context-param>
<param-name>locatorFactorySelector</param-name>
<param-value>red5.xml</param-value>
</context-param>
<context-param>
<param-name>parentContextKey</param-name>
<param-value>default.context</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/wxgameflashserver</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- remove the following servlet tags if you want to disable remoting for this application -->
<servlet>
<servlet-name>gateway</servlet-name>
<servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>gateway</servlet-name>
<url-pattern>/gateway</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/streams/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
</web-app>
需要注意的几个地方:
1.iso = this.getSharedObject(scope, "gamemsg",false);// persistent==false
2.nc.objectEncoding = flash.net.ObjectEncoding.AMF0;//注意这句话(不加的话 同步事件没有被触发)
3.Flash player 9 与10.0 播放器也有区别
===================================================
javascript 与 flash 互通
4. javascript 到 flash
//加载swf 后面的参数列表
var roleid:String;
roleid=loaderInfo.parameters["roleid"];
5. flash 到 javascript
> getURL("javascript:quickreg();"); As2
> getURL(http://www.163.com/, "_parent"); As2
>navigateToURL(new URLRequest(http://www.baidu.com)); As3
=======================================================
<!-- 通信机制代码开始
<object id="objieff" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="300" codebase="http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0">
<param name="movie" value="http://192.168.1.109:5080/wxgameflashserver/comm.swf?roleid=888">
<param name="play" value="true">
<param name="quality" value="high">
<param name="scale" value="noborder">
<embed src="http://192.168.1.109:5080/wxgameflashserver/comm.swf?roleid=888"
width="500"
height="300"
play="true"
loop="true"
quality="high"
scale="noborder"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash">
</embed>
</object>
通信机制代码结束 –>
id一定要加 不然 IE下调用不了 Javascript 脚本 报错为 : NULL为空或不是对象
=============================================
使用javascript调用Flash中的方法
js:
var flash = document.getElementById( "newFlash" );
flash.showNanyhXG();
Flash:
ExternalInterface.addCallback ("showNanyhXG", this, showNanyhXG);
分享到:
相关推荐
【AS3+Red5电子白板Demo详解】 AS3(ActionScript 3)是Adobe Flash Platform中的编程语言,常用于创建交互式内容、游戏和多媒体应用程序。Red5是一款开源流媒体服务器,支持实时流传输协议(RTMP)、记录、播放和...
【标题】"示例(as3red5电子白板)"指的是一个使用ActionScript 3 ...通过这个示例项目,开发者不仅可以学习到AS3编程的基本技巧,还能了解到如何利用Red5实现实时的多媒体通信,从而打造出一个功能完善的电子白板应用。
熟悉AS3的基本语法和Red5相关的API是开发的关键。 三、Flash多媒体应用 1. 视频直播:通过Red5,你可以构建自己的视频直播平台。Flash客户端可以捕获用户摄像头的视频流,然后通过RTMP协议推送到Red5服务器,其他...
3. **复制并重命名应用模板**: 找到RED5安装目录下的`doc/templates`目录,复制`myapp`模板到`webapps`目录,并将其改为你计划的项目名称,例如`myChat`。这个名称将作为你连接的服务名。 4. **创建源代码目录结构*...
### RED5 + Flex3 入门实例详解 #### 一、环境搭建与配置 ##### 1. 下载与安装 - **JRE**: Java运行环境是RED5的基础,确保安装了兼容版本。本文中使用的版本为Sun JDK 1.6.0_12。 - **RED5**: 本文使用的版本为...
知识点:在Windows环境下配置、运行RED5源码及AS3连接RED5的简易流程 一、RED5简介与版本更新 RED5是一个开源的、基于Java的媒体服务器,用于流媒体传输,支持RTMP协议,能够实现音视频的实时交互。随着版本的迭代...
Red5是一个用Java编写的开源媒体服务器项目,它可以作为实时通信(RTC)和流媒体应用程序的基础架构。Red5能够处理RTMP、HTTP-FLV、WebRTC等多种协议,适用于各种应用场景,包括在线教育、远程会议、直播平台等。 #...
不过,通过Flash Media Server(FMS)或者Red5这样的开源Flash服务器,AS3可以用来编写服务器端代码。 音乐服务器可能包含以下几个关键组件: - **播放管理器**:负责处理播放控制,如播放、暂停、停止、快进、倒退...
确保Red5服务器已经正确安装并运行,然后将包含服务端代码的类库部署到Red5的`deploy`目录下。对于Flex客户端,你需要将其打包成SWF文件,并通过HTTP服务器提供给用户下载和运行。 总之,通过在Red5中使用...
AS3提供强大的性能和灵活性,支持高级数据处理、网络通信等功能。 #### 2. Flex组件知识 - Flex拥有丰富的组件库,可以轻松创建复杂的用户界面。 - **UI Components**: 包括Button、TextField、ListBox等基本控件...
Red5服务器负责处理视频流的传输和存储,而SparkWeb客户端则在用户端处理视频展示和捕获,通过WebSocket或RTMP等协议与Openfire和Red5通信。 在实际应用中,开发者可以深入研究源码,了解Openfire与Red5的集成方式...
Linux AS3(Advanced Server 3)是Red Hat Enterprise Linux的一个早期版本,它提供了稳定的企业级环境,适合运行像WebLogic这样的关键服务。在AS3上安装WebLogic,需要确保系统满足最低硬件需求,例如内存、CPU和...
JBoss Application Server 7(简称JBoss AS7)是Red Hat公司推出的一款开源Java EE应用服务器,它基于EAP(Enterprise Application Platform)的轻量级版本,提供了对Java EE 6规范的全面支持。本教程旨在帮助J2EE...
### Red Hat Linux AS4上安装Oracle 10gR2 的详细步骤及注意事项 #### 一、概述 本文档详细介绍了如何在Red Hat Linux AS4操作系统上安装Oracle 10gR2 RAC (Real Application Clusters)。文档基于Vincent Chan在...
本教程旨在指导读者学习 Red Hat Enterprise Linux 5 的安装和配置,特别是针对企业网络环境下的安全性和稳定性要求。通过本教程,读者将了解到 VMware 7.0 的安装、Linux 的分区信息、安装系统中的程序安装等知识点...
在本文中,我们将深入探讨如何使用Node-RED与Allen Bradley PLC进行通信,特别是在Raspberry Pi 2上。Node-RED是一种流行的低代码编程工具,它允许用户通过图形化界面连接不同的服务和设备,构建物联网(IoT)解决方案...
本篇文章详细记录了在VMWare环境下搭建基于Linux AS3的Oracle9i RAC集群的过程,包括从硬件和软件环境准备、虚拟机创建与配置、操作系统安装,到最终的RAC集群部署。文章由David.Guo撰写,原始资料来源于...
【Red Hat Linux AS 3配置HA集群实战】 在IT领域,高可用性(HA)集群是一种重要的技术,它能够确保关键服务的连续性,避免单点故障。Red Hat Linux AS 3是Red Hat公司推出的企业级操作系统,支持构建HA集群以提供...
7. **WebSocket支持**:顺应Web通信技术的发展,JBoss AS 7.1.0引入了WebSocket协议的支持,允许双向实时通信,为富互联网应用提供了新的可能。 8. **改进的热部署**:在不中断服务的情况下,可以实现应用的热部署...