« Return to Thread: Messaging services struggle
That's what I thought and even if I can see the point
raised by Walter, I don't want (and am not able) to reinvent the wheel. So I
would like to use what's available for implementing server data-push and
messaging. I have the following code (simplified):
In the Flex client:
....
<mx:Panel id="msgPanel" autoLayout="true" title="Chat" x="450" width="300" height="400">
<mx:TextArea id="viewMes"
width="100%" height="100%" />
<mx:ControlBar>
<mx:TextInput id="chatMes"
width="100%" />
<mx:Button id="sendMes"
label="Send" click="chatPublisher.send(new
AsyncMessage({msg:chatMes.text}));"/>
</mx:ControlBar>
</mx:Panel>
<mx:Script>
<![CDATA[
....
var cs:ChannelSet = new ChannelSet();
var newChannel:Channel = new
AMFChannel("msgChannel",
"http://localhost:5080/R5_PeopleGrid/gateway");
//var newChannel:Channel = new
AMFChannel("msgChannel",
"rtmp://localhost:1935/R5_PeopleGrid");
cs.addChannel(newChannel);
chatPublisher = new Producer();
chatPublisher.channelSet = cs;
chatPublisher.destination =
"Red5Chat";
chatConsumer = new Consumer();
chatConsumer.destination =
"Red5Chat";
chatConsumer.channelSet = cs;
chatConsumer.addEventListener(MessageEvent.MESSAGE,
msgRcvdHandler, false, 0, true);
chatConsumer.subscribe();
....
function msgRcvdHandler(evt:MessageEvent):void {
Alert.show("Message
received", "Messaging
Service");
viewMes.text += evt.message.body + "\n";
}
In red5-web.xml:
<bean id="my.chat"
class="org.red5.core.ChatService"
singleton="true" />
<!--
enable support for mx:RemoteObject requests -->
<bean
id="flexMessaging.service"
class="org.red5.server.net.remoting.FlexMessagingService">
<property name="serviceInvoker"
ref="global.serviceInvoker"
/>
<!-- add an entry for all possible "destination"
attributes of your
mx:RemoteObject sources -->
<property name="endpoints">
<map>
<entry key="Red5Chat">
<ref bean="my.chat" />
</entry>
</map>
</property>
</bean>
In ChatService:
package org.red5.core;
import
org.red5.server.adapter.ApplicationAdapter;
import
org.red5.compatibility.flex.messaging.messages.*;
public class ChatService extends ApplicationAdapter{
public ChatService() {
System.out.println("ChatService: Started!");
AsyncMessage myMsg = new AsyncMessage();
myMsg.destination = "RED5Chat";
myMsg.body = "HELLO WORLD!";
}
}
Nevertheless when I launch the application I get the
following error:
[ERROR] [http-5080-1]
org.red5.server.net.remoting.FlexMessagingService - Unknown Flex compatibility
request:
org.red5.compatibility.flex.messaging.messages.AsyncMessage(ts=0,headers={DSId=nil,
DSEndpoint=msgChannel},body={msg=testChat},messageId=C4BF3573-495A-6BAA-4F54-381552901AB6,timeToLive=0,clientId=2F72C3C3-C335-28A4-8C6C-A245FC2DBE6F,destination=Red5Chat,correlationId=)
Anyone has any idea of what I’m doing wrong?
Regards,
Ettore
________________________________________
Da: red5-bounces@... [mailto:red5-bounces@...] Per
conto di Dominick Accattato
Inviato: mercoledì
A: red5@...
Oggetto: Re: [Red5] R: Messaging services struggle
You are correct, They are meant to work with those
clientside classes. Joachim had implemented that functionality.
Maybe he'll chime in.
On Wed, Jul 1, 2009 at 11:33 AM, Ettore Paolillo
<Ettore.Paolillo@...> wrote:
Thank you for the insight. But then, what's the use of
the messaging classes
(org.red5.compatibility.flex.messaging.messages.*). They
appear suited to
deal with destinations, channels, consumers, producers
and so on and with a
messaging model based on a produce/subscribe model. I
may be dead wrong, but
I can't understand what else these classas could be
about.
Any hints?
Regards,
Ettore
> -----Messaggio originale-----
> Da: red5-bounces@... [mailto:red5-bounces@...] Per
conto
> di Walter Tak
> Inviato: mercoledì 1 luglio 2009 15.27
> A: red5@...
> Oggetto: Re: [Red5] Messaging services struggle
>
> Messaging is nothing more than sending a fews
string to one specific or
> all
> clients from the server.
>
> You'd want to create your own method/function in
Red5 that will accept a
> few
> parameters like:
>
> public void incomingMessage( String msgText,
String msgTarget ) {
> // if the target is empty we'll
send the message to all clients
> connected to this room/scroop
> // if the target has an ID we'll
iterate through all connections and
> see
> if one has that ID and then send the message to
that single connection
> }
>
> On the flash/flex side you could create a custom function
as well, that
> you'd add to the client object of NetConnection ,
something like:
>
> function incomingMessage(msgText:String,
msgSenderID:String,
> msgSenderName)
> {
> // if the sender is a ID then it's
a private incoming message,
> especially for you, put the message in a private
popup box or somethign
> // if the sender is empty then it's
a public message that should be
> printed in the public/generic textarea
> }
>
> Best OOP practise is to create a new class and
use that as the client
> object
> e.g.
>
> ...
> connection = new NetConnection();
> connection.client = new
CustomClientNetConnection();
> ...
> class CustomClientNetConnection{
> public function incomingMessage(msgText:String,
msgSenderID:String,
> msgSenderName):void {
> // do stuff
> }
> }
> ...
>
> You get the idea.
>
> Walter
>
>
> > Hi,
> >
> > I'm struggling with getting RED5 messaging
services to work with a Flex
> > client. In particular it isn't clear to me
how to define and set a
> > suitable
> > channel for the "producer" and
"consumer" entities in the client.
> >
> > Can messaging work over rtmp or is it
limited to http channels?
> > Also, how should I configure red5-web.xml to
enable support for
> messaging?
> > Are there any examples or tutorials I could
consider similar to the
> > excellent J. Bauch "Migration
Guide" which helped me a lot in setting up
> > Remote Object support?
> >
> > I'm sorry for the many questions but even
after a lot of googling and
> > searching through the mailing list it
appears that messaging and data-
> push
> > is one of the less debated issues in RED5.
> >
> > Thank you in advance for any light you will
shed on this topic.
> > Regards,
> > Ettore
>
>
> _______________________________________________
> Red5 mailing list
> Red5@...
>
http://osflash.org/mailman/listinfo/red5_osflash.org
_______________________________________________
Red5 mailing list
http://osflash.org/mailman/listinfo/red5_osflash.org
« Return to Thread: Messaging services struggle
| Free embeddable forum powered by Nabble | Forum Help |