I have a java socket server that sends an Animal object to the Flash client when it connects.
The object is sent like this:
Amf3Output amf3Output = new Amf3Output(SerializationContext.getSerializationContext());
amf3Output.setOutputStream(userSocket.getOutputStream());
amf3Output.writeObject(animal);
And the code on flash side is:
var object:Object = socket.readObject();
trace(object);
trace(object as Animal);
However when the second trace gives me a null
I have checked that java sends out 31 bytes and Flash receives 31 bytes.
I think it might be that my Java and AS3 classes don’t match some AMF requirement.
Java class:
package main;
public class Animal {
public String name;
public int age;
}
AS3 class:
package
{
[Bindable]
[RemoteClass(alias="main.Animal")]
public class Animal
{
public var name:String;
public var age:int;
}
}
I’m not familiar with Java and the AMF serializers/deserializers available for it, but sending typed objects over sockets is indeed supported in flash, and works properly if you send the right data. Below is an example of a socket server in ruby communicating with a Flash application. I’m using RocketAMF to send an AMF3 object over the socket to a client after it connects.
SocketTest.as:
socket_server.rb: