Have you folks tried using OpenAmf instead? It worked perfectly fine for me and
I experienced no (de)serialization issues:
dwnld & tutorial: http://www.flash-db.com/Tutorials/helloOpenamf/index.php
Guillaume Lecanu <[EMAIL PROTECTED]> wrote:
Hi,
I have exactly the same problem.
Parameters sent from RTMPClient can't be readed from the appConnect() of Red5.
Sri Kalyanaraman seems to say it's a problem of AMF encoding, may be there is
methods we can uses to encode the params object in AMF before to uses it in the
RTMPClient.connect() ?
Thanks for your help.
Le jeudi 15 février 2007 à 12:36 +0200, Sri Kalyanaraman a écrit :
Hi guys,
I have an application where client should pass username and password as the
connection parameters. If the parameters are invalid, I will close the
connection to the user.
public boolean roomConnect(IConnection conn, Object[] params)
{
log.debug("New connection attempt from " + conn.getRemoteAddress() +
"...params.." + params.length + "::" + conn.hashCode());
// Parse the user/pass out of the connection parameters
HashMap map = (HashMap) params[0];
String userName = (String) map.get("username");
String password = (String) map.get("password");
if(!(userName.equals("test") && password.equals("pass"))) return
false;
else return true;
}
Now, I wish to create a Java client to test this code. I tried my best, but
atlast found that, I need to pass the connection parameters in the amf/amf3
format. This is the reason why the flex client passes here and the RTMPClient()
fails here. Below is my RTMPClient (Java client) code.
ObjectMap<String, Object> params = new ObjectMap();
params.put("objectEncoding",(int)3);
params.put("app","hibernate/r4i");
params.put("fpad", false);
params.put("flashVer", "WIN 9,0,28,0");
params.put("tcUrl", "rtmp://localhost/oflaDemo");
params.put("audioCodecs",(double)615);
params.put("videoFunction",(double)1);
params.put("pageUrl","http://localhost/test.html");
params.put("swfUrl","http://localhost/test.swf");
params.put("videoCodecs",(double)124);
params.put("password","pass");
params.put("username","test");
client.connect("127.0.0.1",1935,params);
I tried passing the Object[] as arguments as below..Still fails from Java
client.
ObjectMap<String, Object> tparams = new ObjectMap<String, Object>();
tparams.put("password","pass");
tparams.put("username","test");
Object[] obj = new Object[]{params,tparams};
client.connect("127.0.0.1",1935,obj);
The reason I found is,
org.red5.server.net.rtmp.codec.RTMPProtocolDecoder has this method
protected Notify decodeNotifyOrInvoke(Notify notify, ByteBuffer in, Header
header, RTMP rtmp) {}
which expects a bytebuffer in amf format. It deserializes the
org.red5.io.amf.Input object according to the amf format as intended. Is ther
any other way to have a proper amf client for red5 in Java?
Objective : That would definitely help in testing the code/for those who don't
know actionscript 3.0/for those who don't have flex licenses :).
Thanks,
Sri.
_______________________________________________ Red5 mailing list
[email protected] http://osflash.org/mailman/listinfo/red5_osflash.org
_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org
---------------------------------
Don't get soaked. Take a quick peek at the forecast
with theYahoo! Search weather shortcut._______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org