AS3 Flash アプリから、作成したカスタム クラスのインスタンスに SharedObject を設定しようとしています。私が知る限り、sharedObject.setProperty("propertyName", myCustomClass)
Red5 を呼び出すとすぐに「Error loading class」がスローされ、デコードに失敗したためクライアントが切断されます。
他の多くの人が同様の問題を抱えているようですが、私が見つけたのは、サーバー側で SharedObjects を作成することだけです。クライアント側 (Flash アプリ内) での SharedObject の作成について多くを見つけるのに苦労しています。付属の「ライブ」Red5アプリをそのまま使用しています。
Red5ログに表示される実際のエラーは次のとおりです...
[ERROR] [NioProcessor-7] org.red5.io.amf.Input - Error loading class: com.striparcade.API.Player
[ERROR] [NioProcessor-7] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - Error decoding buffer
com.striparcade.API.Player
問題のカスタムクラスです。このクラスは IExternalizable を実装し、writeExternal() メソッドと readExternal() メソッド、および registerClassAlias() の呼び出しを含みます。順調にシリーズ化されているようです。
確かに、Red5 アプリでもこのクラスを再作成する必要はありませんか? Red5 はデータを取得し、必要に応じて他のクライアントに渡すだけでよいのではないでしょうか? 私が見逃しているものは何か分かりますか?
Red5 1.0.1 を使用しています。AMF3 エンコーディングに関する多くのバグが、バージョン .7 あたりで修正されたようです。また、現在 Windows 7 マシンでローカルにテストしています。