【发布时间】:2013-05-24 05:24:55
【问题描述】:
从一个 AS3 Flash 应用程序中,我尝试将 SharedObject 设置为我创建的自定义类的实例。据我所知,只要我调用sharedObject.setProperty("propertyName", myCustomClass) Red5 就会抛出“错误加载类”,然后因为解码失败而断开客户端。
似乎很多其他人都遇到过类似的问题,但我发现的一切都是关于在服务器端创建 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 编码的错误都在 0.7 版左右得到修复。另外,现在只是在 Windows 7 机器上进行本地测试。
【问题讨论】:
-
查看我对这个问题的回答:stackoverflow.com/questions/15667848/…
-
我已经打电话给
registerClassAlias。 -
您需要注册每个可能在您内部引用的类
Player类(以及这些类中的任何类),您确定要这样做吗?我没有使用 Red5 的经验,所以如果问题出在那儿,其他人将不得不发表评论 -
是的,我把它归结为一个简单的 CustomClass,它有一个用于测试的 String 属性,但也遇到了同样的问题。问题似乎与 Red5 有关,或者至少与包含的“实时”Red5 应用程序有关。
标签: actionscript-3 red5 amf shared-objects