Professional Documents
Culture Documents
In a prerelease of Adobe Flash Player 10 code name "Astro", the noticable features are audio and video
features which will be available with proposed future release of Adobe Flash Media Server.
Dynamic Streaming
As streaming is dependent on newtwork condition, Dynamic Streaming will provide best quality video and will
be auto adjustable based on bandwidth availability. Video streams over RTMP from proposed future releases
of Flash Media Server can dynamically change bitrate as network conditions change.
According to Adobe- RTMFP provides a UDP-based secure network transport alternative to RTMP-over-TCP.
To take advantage of the feature you will need to establish a net connection via future releases of Flash
Media Server or other Adobe server products. UDP (User Datagram Protocol) is an efficient and standardized
Internet protocol for delivering media assets because of its support for lossy delivery, improving performance
of real time communication. RTMFP is always encrypted which helps protect media delivery. This technology
is a result of Adobe's acquisition of Amicima, Inc. in 2006.
The new, higher fidelity Speex voice codec that delivers the lowest-latency audio experience.
Reference:-
Adobe Flash® Player 10 beta
http://sunil-gupta.blogspot.com/2008/05/flash-player-10-out-with-new-audio-and.html
360 Degree Interactive Video And Future Of Flash Player And FMS
Here is the video where kevin Towers shows how Flash Media Interactive Server, Flash Media Streaming
Server and Flash Media Rights Managment Server are leading the way in the protection and streaming of
digital video today.
Reference:-
360 Degree Interactive Video
Multibitrate Support Coming to Flash Player and FMS (?)
Adobe at NAB 2008- Flash Media Server
http://sunil-gupta.blogspot.com/2008/05/360-degree-interactive-video-and-future.html
Open Dialect -An Open Source Flash IDE Now Supports Linux
Few days back, I wrote about an interesting application called Open Dialect, a free open source flash IDE
written in C# using .Net 2.0 framework.
In my previous post, I mentioned that OpenDialect team is porting this application on Linux too. Today they
have announced the release of Open Dialect 0.2.0 (Linux/Windows Flash IDE).
Open Dialect 0.2.0 supports .SWF creation and testing on Linux and Windows, with partial support for OS X
10.5.
To know more about this release or Open Dialect, follow the links in reference.
Reference:-
Open Dialect, Open source alternate of flash IDE
About Open Dialect
Open Dialect on Osflash
Screenshots
http://sunil-gupta.blogspot.com/2008/04/open-dialect-open-source-flash-ide-now.html
To know in detail about the this open source flash IDE, Follow the Open Dialect wiki here.
Open Dialect 0.1.1 is available for Windows but they are porting it on Linux and OSX using MONO and
GTK+.
The available demo for showing the capabilities of Open Dialect is here.
References:-
Open Dialect
Open Dialect HomePage
Open Dialect Main Website
http://sunil-gupta.blogspot.com/2008/03/open-dialect-open-source-flash-ide.html
RTMP is a TCP based propriety protocol developed by Adobe System for the purpose of streaming
Audio/Video data between Flash Player and media server.
RTMPT is a variation of RTMP which works behind the firewall as well. It works on Port 80 and encapsulate
the RTMP data in HTTP request.
RTMPS is again a variation of RTMP which works over secure HTTPS connection.
RTMPE is a new 128 bit encrypted protocol developed by Adobe systems for securing the stream data
between flash client and server. It's lightweight than SSL.
It's a DRM solution from Adobe for flash.
Multiplex RTMP is a protocol between edge and origin, developed by Red5 for clustering of stream data
using Terracotta.
Related Post
H.264 On RTMP
http://sunil-gupta.blogspot.com/2008/03/rtmp-protocol-flavours.html
Some of the features of Adobe Flash Media Rights Managment server are listed below-
References:-
http://sunil-gupta.blogspot.com/2008/03/adobe-flash-media-rights-management.html
New Features:
Bugfixes:
References:-
http://jira.red5.org/secure/Dashboard.jspa
http://osflash.org/red5/070final
http://sunil-gupta.blogspot.com/2008/03/red5-070-complete-changelog-and.html
Few days back I wrote here about Red5 load balancing using Terracotta .
In this post I will write little bit about Terracotta technology.
Terracotta is an open source JVM clustering software for Java.It means the applications running on multiple
JVMs are capable to interact with each other as they are running on a same JVM.
To know more about Terracotta follow the link here or watch very impressive demo here.
References:-
http://sunil-gupta.blogspot.com/2008/03/terracotta-network-attached-memory.html
H.264 on RTMP
Now its time for Red5 team to comeup with H.264 solution.
http://sunil-gupta.blogspot.com/2008/03/h264-on-rtmp.html
Below is the offline version of many great Red5 tutorials so that you do not need to be online more to read
them again.
http://sunil-gupta.blogspot.com/2008/03/red5-offline-resources-download-pdfs.html
Looking forward for many new great features and enhancements in near future from Red5 team.
http://sunil-gupta.blogspot.com/2008/03/mrtmp-red5-load-balancing.html
What is H.264 and why everyone now is talking about this only.
Last year the online media giant YouTube also started showing H.264 contents.Flash media server 3 is
supporting H.264 content both live and on demand.
When we talk about FMS, one name also comes in mind and it's Red5, for those who can not go for FMS
because of its price.
Red5, for the people who live the open source way.
When Red5 released the v0.7.0, I was discussing in my blog post about the possibility of supporting H.264 in
near future by Red5 and few days back i read an article on Flashcomguru about Wowza media server
supporting H.264.
The link is here.
I was sure that Red5 team is also working on it. Red5 team always keep doing great things right on time.
So here is a statement from Chris Allen about Red5 supporting H.264 content in response to my comment on
wowza supporting H.264 at flashcomguru.
Correct, Red5, or more specifically, our team member Paul Gregoire is working on the h.264 support.
This should be done pretty soon. We are releasing Red5 0.7 today or tomorrow, and the h.264 stuff
will follow soon thereafter in 0.7.1 .
So cheers for Red5, Everyone is waiting for Red5 v0.7.1. Great efforts from Red5 team.
http://sunil-gupta.blogspot.com/2008/03/red5-ready-for-h264.html
1. Initial Edge/Origin clustering support for multiple Edges with a single Origin
New Flex admin tool.
2. Added a multi-threaded ApplicationAdapter that allows multiple clients to
connect simultaneously to the same application.
3. Added stream listeners that can get notified about received packets.
4. Fixed a critical memory leak bug in networking due to MINA ExecutorFilter.
5. Added new Flash Player 9 statuses NetStream.Play.FileStructureInvalid and
NetStream.Play.NoSupportedTrackFound.
Known issues:
I am very eager to use this new version of Red5. It's another great acheivement from Red5 Team. Let?s hope
Red5 community will come up with more critical improvements such as H.264 support soon
References:-
http://sunil-gupta.blogspot.com/2008/02/red5-v070-final-release.html
From so many days, I am listening about this MicroHoo word. Everybody is talking about this MicroHoo and
many rumors started flowing in the air. Big surprise when i checked my favourite java forum . There also
everyone is talking about who buying whom.
I am also thinking of buying Microsoft :) Let see they accept my offer or not. By the way it's saturday night
and i am going to sleep after thinking of this deal.
http://sunil-gupta.blogspot.com/2008/02/microsoft-buying-yahoo.html
AsUnit-- Open-source Unit Testing for Action Script 2.0 and 3.0
1. Framework
2. XUL UI
3. MXP
In the below example we will use the first one i.e. Framework. To start with below example, you have to first
download the Framework from here. It's a zip file. You can unzip this file in to your hard disk location. This will
generate some folders named as2, as3, as3docs and as25. As clear from name, these folders are for
different Actionscript versions. Since the below example is in Actionscript 3.0, we will use as3 folder.
To start with the example, First create a folder say TestExample in any location of your hard disk. Copy this
as3 folder to TestExample folder. Now it's time to create the sample application which we will test with
AsUnit.
package {
Now its time to create test case for this class. Create a file named ExampleTest in the same folder like this.
package {
//The below line import the AsUnit library of TestCase
import asunit.framework.TestCase;
/**
* Test the add method of Example class created above
*/
public function testAdd():void {
var result:Number = example.add(3,3);
assertEquals("Expected:6 Received:"+result, result, 6);
}
}
}
Now our test case is ready, Another thing we have to do is to create the TestSuite for executing many test
cases together. Create a file named ExecuteAllTests.as in the same folder like this.
package {
import asunit.framework.TestSuite;
import ExampleTest;
Till here we are ready with our main application, test case, test suite, Now we will create a runner class to run
this test suite to produce some results.
Create a file named ExampleTestRunner.as in the same folder like this.
package {
import asunit.textui.TestRunner;
As from the above structure you can see this runner class is taking our TestSuite class as a parameter and
the last parameter is a boolean to show and hide the trace.
Now it's time to run the application. For this create a flash file named ExampleTestRunner.fla in the same
folder. This file will be empty file. Just you need to put ExampleTestRunner in Document class under
properties tab. This step is to avoid the below error while compiling the fla file.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at asunit.textui::TestRunner/asunit.textui:TestRunner::addedHandler()
at flash.display::DisplayObjectContainer/addChild()
at asunit.textui::TestRunner/setPrinter()
at asunit.textui::TestRunner/doRun()
at asunit.textui::TestRunner/start()
at ExampleTestRunner$iinit()
at ExampleTestRunner_fla::MainTimeline/ExampleTestRunner_fla::frame1()
The more detail on this can be found from the references given below. The below image will show how to use
Document class in Flash CS3.
Its time to run the flash file and see the result. Test the flash movie by hitting Ctrl+Enter. YOu will see a
screen like this if everything goes fine.
The above screen shows that both the tests are passed, Now go to ExampleTest.as file again and change
this line assertEquals("Expected:6 Received:"+result, result, 6);
to assertEquals("Expected:6 Received:"+result, result, 7); and again run the application, you will see a
screen like this saying one test fail in two tests.
References:-
http://sunil-gupta.blogspot.com/2008/02/asunit-open-source-unit-testing-for.html
Back to Flex
It was May 30, 2006 when i started writing here. The very first post i wrote about was the Flex( Introduction to
flex data services). It's more than one and half year now and i am back again to flex.
Last time i got very little chance to work with flex but i enjoyed alot. This time it's going to be more exciting
and challenging. The work is great and interesting and i am ready to fight with flex again.
Very recently When i was working for a project based on Red5 flash server and Flash 8 with Action Script
2.0. My requirement was to fetch the number of images from the web server and render them on flash client
repeatedly after n milliseconds. To avoid the flickering i used double buffering. But the problem was the time
it was taking to load the images from server and then render them. I was using the MovieClipLoader loadClip
function to dynamically load the jpeg files, Though the size of each jpeg was not more than 15 KB, but it was
taking around 3-4 seconds to load 16 jpeg images of size less than 15 KB. This was very frustating as i was
getting the updated images after 3-4 seconds. How good if flash provide some kind of sockets in Action script
2.0, by using that i can transfer the image object as binary data and then draw it on flash client.I am really
missing this functionality in flash to send image data either using Flash remoting. They have kept it for their
own product called Flash communication server.. I am still looking for a solution that can minimize the time
required to load these images from web server. If i can reduce it to 1 sec on higher bandwidth, It would be
great.
http://sunil-gupta.blogspot.com/2007/10/limitations-of-flash-action-script-20.html
Now we are ready with our client object, We will add this client object with the IClient in Red5 like below
return true
}
}
/*Here you can see how to access your client information throughout the application*/
return true;
}
This way you can have your own client id's names and roles for different clients.
http://sunil-gupta.blogspot.com/2007/08/adding-client-information-with-every.html
Here i will explain, How you can configure your log settings in your red5 application in order to acheive
that.Let say you have an application with name Test.Open the log4j.properties file under your application
WEB-INF folder, Initially the contents will be -
#-----------------------------------------------------------------
#log4j.rootCategory=, A1
#log4j.appender.A1=org.apache.log4j.net.SocketAppender
#log4j.appender.A1.RemoteHost=XX.XX.XX.XX
#log4j.appender.A1.Port=8888
#log4j.appender.A1.Threshold=DEBUG
#log4j.appender.A1.locationInfo=true
#----------------------------------------------------------------------
The above lines describes that upon running the application, it will connect to this remote address on port
8888.
Now you can also put the server name in your log messages, so that at receiving end, you can differentiate
the log messages coming from different red5 servers. To acheive that, we will add some line in our
application source.
//------------------------------------------------------------------
if (!super.appStart(app)){
log.error("Unable to start the application");
return true;
}
//-------------------------------------------------------------
You can see from the above piece of code, that we have created a variable called "red5server" and we are
putting the server name in that.This variable will be accessed by log4j server later.
Now, the sending part is complete, We have to implement the receiving end i.e. The log4j server, which will
receive all these log messages.
In order to run log4j server, you need to create a properties file. I am showing here, a sample file called
"socketserver.properties". The contents of the file will be-
#--------------------------------------------------------------------
log4j.rootLogger=, A1
#log4j.appender.A1=org.apache.log4j.ConsoleAppender
#log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File= remote-log.log
log4j.appender.A1.MaxFileSize=1024KB
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern= %1.25X{red5server}- %p %t %c - %m%n
#------------------------------------------------------------------
Now you can see from above lines, I have referred to the same variable, i have created in source file.
This piece of code will add the red5 server name in the begining of every log message.
You can now start the log4j server in order to receive the logs from applications in this way-
Now your log4j server is up and running, Every application, which is referring to this log server will throw their
log messages to this server, which you can later on view.
Happy logging!!
http://sunil-gupta.blogspot.com/2007/07/red5-log-forwarding-to-centralized-log.html
From Last 15 days, I was trying hard to get it done. My previous research on this and some concept from
open source and commercial project, I am finally able to do a complete desktop sharing in my conference
application.And the best part is that, I am not using any native driver or so to acheive this, A pure java
solution with flash just works fine, I got some idea from here. But i tried a little different approach for this. And
the best thing is that, Only the user, who wants to share his desktop need java plugin in his browser,all other
users in the conference can just see and control his desktop with their flash client, Screen rendering part is
little bit slow at this time, but the mouse and keyboard controls are more faster than i expected.The only
frustating part having flash as a desktop sharing client is that, there is no way to remove the flash context
menu, So i have done a workaround(got it from some forum) and put right click event on context menu itself.
http://sunil-gupta.blogspot.com/2007/07/desktop-sharing-with-red5-and-flash.html
Openmeetings, A new multilanguage, and customizable video conference and group collaboration application
very similer to Adobe Connect. They have used Open Laszlo and Red5 as a technology to build this
application. The project has various features like screen sharing, Document importing. There are various file
format(.tga, .xcf, .wpg, .txt, .ico, .ttf, .pcd, .pcds, .ps, .psd, .tiff, .bmp, .svg, .dpx, .exr, .jpg, .jpeg, .gif, .png,
.ppt, .odp, .odt, .sxw, .wpd, .doc, .rtf, .txt, .ods, .sxc, .xls, .sxi, .pdf) that you can import and share with others
in the conference.The whiteboard items are draggable, You can edit the items, also some of them are
resizable as well, Whiteboard can be stored or recorded.
Demo
Related Post
New Version Of Dimdim's Open Source Community Edition Releasing Soon
http://sunil-gupta.blogspot.com/2007/07/open-source-video-conferencing-using.html
1: Open SSL //Open source SSL libraries required for compiling Stunnel
2: Stunnel //Open source SSL wrapper software uses open SSL works both on
Windows and Linux.
1:- Install the Open SSL (if windows use exe RPM or source for Linux machine can be downloaded from
here- http://www.openssl.org/ ).
2:- Install Stunnel (if windows use exe otherwise RPM or compilation from source is preferred, can be
downloaded from here- http://www.stunnel.org/download/). Make sure that you already have compiled Open
SSL in your machine before proceeding with the installation of Stunnel; otherwise it will fail to compile.
Under Linux the standard command to compile Stunnel from source are described below. For any update
please always follow the installation instructions given their website.
There are several configurations that differ based on your computer and environment. That can be read from
the website itself.
3:- Running Stunnel (There are several ways/mode you can run the stunnel. Follow the FAQ available in their
website to choose the best which matches your requirements).
To run stunnel, you always require a configuration file. The process of making sample configuration file
(stunnel.conf) is described below.
************************************************************************
sample.conf
cert = /etc/stunnel/stunnel.pem
;chroot = /var/run/stunnel/
pid = /stunnel.pid
key = /etc/stunnel/stunnel.pem
; Authentication stuff
;verify = 2
; Don't forget to c_rehash CApath
;CApath = certs
; It's often easier to use CAfile
;CAfile = certs.pem
; Don't forget to c_rehash CRLpath
;CRLpath = crls
; Alternatively you can use CRLfile
;CRLfile = crls.pem
;[pop3s]
;accept = 995
;connect = 110
;[imaps]
;accept = 993
;connect = 143
;[ssmtp]
;accept = 465
;connect = 25
[rtmps - https]
TIMEOUTconnect=20
accept = 443
connect = 80
TIMEOUTclose = 20
; vim:ft=dosin
Note: - When you install Stunnel, you get a default sample file, which is not enough in most of the cases to
run the flash application. The additions to configuration file I made are as follows.
Also the line having ; in the start denotes the commented portion in file.
cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem
pem stands for ?privacy enhanced mail' used as a key format. The above two lines tells the location of pem
files need to be generated. This will be configured by user. The above is the best location for Stunnel
although you can change it to any desired location.
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
The above two lines are for better performance of Stunnel in our case.
The above line is a bug in a specific platform, since we are running it in Linux; we commented this line,
although it could be needed in some case.
The above lines are very important, Because Stunnel by default run in background mode. You will never be
able to see if it is running. So better to put it in foreground, so that you can make sure that stunnel is running
properly. Also the debug = 7 is very important since by default stunnel does not generate any log. You can
direct him to generate log, so that you can debug your application by seeing all those log messages. The
above mentioned log directory is default Linux directory where all system logs are generated.
In the sample configuration file, you will always find this option un-commented leading to a different
architecture, since we are running Stunnel in server mode not client mode, so we will comment this line.
[rtmps - https]
TIMEOUTconnect=20
accept = 443
connect = 80
TIMEOUTclose = 20
And the very last lines are mentioned above. In the sample configuration file, you will never find rtmps and it
is not even mentioned anywhere in Stunnel. The default file contains only https, add rtmps like it is added
here. Also accept port is 443, which is the default port used for secure communication and it is open like port
Now in order to run your application under secure connection, you require a certificate to be created on the
machine where the Stunnel is installed. The procedure for creating a certificate and the possible directory to
put this certificate is described below.
Use of certificate:-
When an SSL client connects to an SSL server, the server presents a certificate, essentially an electronic
piece of proof that machine is who it claims to be. This certificate is signed by a 'Certificate Authority'
(hereafter a CA) -- usually a trusted third party like Verisign. A client will accept this certificate only if
The certificate presented matches the private key being used by the remote end.
The certificate has been signed correctly by the CA. The client recognizes the CA as trusted.
Every stunnel server has a private key. This is contained in the pem file which stunnel uses to initialize its
identity. If we notice above, we have given the reference of this pem file in the start of our configuration file
under cert.
Note:-Under client mode we need not to have certificate in most of the cases, but if we are running it in server
mode, we require a certificate. Since we are using server mode, I have generated a self certificate.
To make certificate:-
openssl req -new -x509 -days 365 -nodes -config stunnel.cnf -out stunnel.pem -keyout stunnel.pem
This creates a private key and self-signed certificate. More information on the options of this can be read from
FAQ section of Stunnel website.
While executing the command, it will ask for some questions like Country, City, Company etc., Give the
answer of those and it will generate the key and self certificate.
4:- Put your sample.conf file in /etc/stunnel directory where the .pem file was created earlier.
The above command will start the stunnel and you can verify the log from /var/logs/stunnel.log file.
6:- Now stunnel is up and running, we need to change the Red5 configuration to accept the connection from
Stunnel.
Go to red5 installation directory and search for conf folder where all red5 configuration files exist.
Open red5.properties file and under rtmps.host_port property put 443. The sample file can be like below.
rtmp.host_port = 0.0.0.0:1935
rtmp.threadcount = 4
debug_proxy.host_port = 0.0.0.0:1936
proxy_forward.host_port = 127.0.0.1:1935
rtmps.host_port = 127.0.0.1:443
http.host=0.0.0.0
http.port=5080
rtmpt.host=0.0.0.0
rtmpt.port=80
7:-Now we are done with server side, In order to run application under SSL, we need to change the client
side protocol from rtmp to rtmps like below. And compile the flash client and run it on browser, a certificate
will pop up, accept it and the application will run under SSL.
http://sunil-gupta.blogspot.com/2007/06/secure-your-red5-applications-with.html
Test
No flash
Please install FLASH plugin.
http://sunil-gupta.blogspot.com/2007/05/test.html
Creating a simple shared whiteboard application in red5 is very easy, All you need is to get the corrdinates
and put them in the shared object and let shared object work for you.
Now when we move mouse pointer over a movie clip for drawing , we capture the xmouse and ymouse to
send them to server. For Example.
sample_MC.onPress = function(){
//Send xmouse and ymouse to server along with "press" event string
NetConnectionObj.call("somemethod", null,param1, param2,param3); //sending values
};
sample_MC.onMouseMove = function(){
//Send xmouse ymouse along with "move" event string
NetConnectionObj.call("somemethod", null,param1, param2,param3); //sending values
}
Now on server(java) side change the shared object with these values
E.g.
Whiteboard_SO.onSync = function(infolist){
// Inside the change event we will get the xmouse and ymouse and press string
//If event string is press, jump to new line(i.e. lineto(x,y))
//If event string is move, move with drawing(i.e. moveto(x,y))
}
Reference:-
Create whiteboard application with Flash communication server
http://sunil-gupta.blogspot.com/2007/04/shared-whiteboard-application-in-red5.html
Step 1:-
Get a default application template from doc folder of your Red5 installation directory (e.g. for windows: -
?C:\Program files\Red5\doc\templates\myapp?).
Copy this folder into Red5\webapps\ directory.
Step2:-
Now we have a default template available for running the server side application. We will change the default
configuration accordingly. Rename myapp folder to sample. This sample folder will be the name of your
application. We will now change the configuration files inside sample folder. The structure of the application
will be like this-
Open the red5-web.properties file and change the contextPath to sample like below ?
webapp.contextPath=/sample
webapp.virtualHosts=localhost, 127.0.0.1
Open web.xml file and change the display and webAppRootKey like below?
webAppRootKey
/sample
Now open the red5-web.xml file and change the application name likes below-
where org.xyz is the package structure used here. It could be replaced with actual application structure.
lib directory will contain the jar file of our application. We will explore it later while creating an application.
Step3:-
We are ready with the server side application configuration. Now we will create the actual application which
will interact with the flash client.
Open any java IDE like eclipse and create a new java project. Name it to Sample. Create following structure
in the Sample project.
src folder will contain the application package structure org.xyz. Compiled class file will be under classes
folder and lib folder will contain the jar of compiled class.
Here in ?jar? target we have copied the created jar file inside our application directory under webapps folder
of Red5 installation. One can manually do the copy paste.
Note: - Don?t forget to add red5.jar from your Red5 installation in the CLASSPATH of eclipse so that it can
find the Red5 libraries and compile the application without any errors..
Step4:-
Now we will create our source file. Create a java file, name it to Application.java
Application.java
package org.xyz;
//log4j classes
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
//Red5 classes
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
/**This method will execute when first client will connect to Red5 server*/
public boolean roomStart(IScope room){
if(super.roomStart(room) == false){
return false;
}
log.info("Inside room start of Application");
return true;
}
/**This method will execute everytime when a client will connect to Red5 server*/
public boolean roomConnect(IConnection conn, Object params[]){
if(super.roomConnect(conn, params) == false){
return false;
}
log.info("Inside room connect method of Application");
return true;
}
/**This method will be called when a client disconnect from the room*/
public void roomDisconnect(IConnection conn){
super.roomDisconnect(conn);
log.info("Inside room disconnect method of Application");
}
/**This method will be called when a client will be disconnected from application*/
public void appDisconnect(IConnection conn){
log.info("Inside app disconnect method of Application");
}
/**This method will be called from the client. This method will show ?Hello World!? on *the flash client side .
*/
public String sayHello(Object[] params){
log.info(?I got your name:-?+params[0].toString());
return ?Hello World!? + params[0].toString();
}
The above file was just to give a feel of how a server side code looks like.
Read Red5 documentation for more details on methods in AplicationAdapter class. Here we have defined a
method named sayHello, which will get user name from flash client and will append this user name to ?Hello
Now run the jar task of your build.xml file, this will compile your application class, will generate the desired jar
and will copy it to your application directory inside Red5.
Step5:-
Now we are ready with server side application, we will start with the flash application to connect with the
Red5 server.
Drag an Alert component from window?components in the library. Open the Action-Frame and write the
following lines of code-
import mx.controls.Alert;
nc.val = this;
nc.onStatus = function(info){
switch(info.code){
case "NetConnection.Connect.Success":
Alert.show("Got connected with application);
this.val.callServer();
break;
case "NetConnection.Connect.Failed":
Alert.show(info.application);
break;
case "NetConnection.Connect.Rejected":
Alert.show(info.application);
break;
case "NetConnection.Connect.Closed":
Alert.show("Client Disconnected");
function callServer(){
var resultObj:Object = new Object();
nc.call("sayHello", resultObj,"Your Name");
resultObj.onResult = function(str){
Alert.show(str); //This will display "Hello World! Your Name"
}
};
}
Finish:-
Run your flash client and if its get successfully connect with Red5 server, it will display an alert box saying
?Hello World! Your Name?
With the help of above tutorial, you can extend your application to any level.
For more information on Red5 related documents follow the link provided below-
http://sunil-gupta.blogspot.com/2007/03/how-to-create-sample-application-using.html