【发布时间】:2014-01-11 08:48:19
【问题描述】:
我们有一个通过 SignalR 来回实时通信的服务。我们有一个 HTML5 前端,但我想尝试使用 AIR 制作一个 Flash/Actionscript 前端,我可以将其编译为原生 iOS/Android 应用程序。是否有可用于与 SignalR 服务器集线器通信的库?
【问题讨论】:
标签: flash actionscript signalr
我们有一个通过 SignalR 来回实时通信的服务。我们有一个 HTML5 前端,但我想尝试使用 AIR 制作一个 Flash/Actionscript 前端,我可以将其编译为原生 iOS/Android 应用程序。是否有可用于与 SignalR 服务器集线器通信的库?
【问题讨论】:
标签: flash actionscript signalr
目前没有 Flash/ActionScript 代理生成器。鉴于 ActionScript 基本上只是 JavaScript,因此创建起来相当简单。您需要做的就是创建一个自定义的IJavaScriptProxyGenerator 实现,它会发出一个代理,该代理可以最好地利用并将其自身暴露给ActionScript 运行时。
您可以将DefaultJavaScriptProxyGenerator 克隆为一个起点(称为ActionScriptProxyGenerator),然后只需替换实现中发出基于jQuery 的模式/impl 的部分以发出基于ActionScript 的模式/impl。
然后您只需点击 Hub 端点将脚本下载到 Flash 中(或者您可以将其保存并直接静态构建到 Flash 组件中),然后您就可以开始运行了。
如果你最终这样做了,我相信 SignalR 项目和其他 Flash 开发者会喜欢你回馈它,所以如果你这样做,请务必发送拉取请求!
【讨论】:
如果您仍然感兴趣,我在这里有一个通过 javascript 桥接至 as3 的 signalR 的完整工作演示:
https://github.com/blinemedical/SignalRToAs3
repo 自述文件解释了正在发生的事情以及 .net 中的可编译后端和 as3/flex 中的前端以演示正在发生的事情。该示例使用旧版本的 fluorine 进行对象序列化,但任何版本都应该可以工作。如果您有任何问题,请随时提出
【讨论】:
您可能有几个选择:
使用FluorineFX,开源项目,并查看发布者/消费者的使用情况以进行实时通信。 FluorineFX 会将强类型化的 .Net 对象转换为 ActionScript 对象,从而为您节省大量的序列化和反序列化时间。您还可以使用 FluorineFX 进行 RPC 调用以及非实时通信。
如果您更喜欢受支持的商业产品,请使用 WebOrb.NET。 WebOrb 是全面的,并且已经存在了很长时间。它具有 FluorineFX 的所有优势,只是它是一个闭源产品。
自 2001 年以来,Flash 一直支持通过 XMLSocket 进行实时、有状态的通信,这与 WebSocket 类似。您可以让 SignalR 以 XML 格式将对象发布到 XMLSocket。您必须使用此选项编写自己的 XML 序列化器和反序列化器,而且性能会更差,因为 XML 解析要慢得多。
【讨论】:
如果有人对此仍然感兴趣,我有一个 SignalR Flex/AS3 客户端 swc,地址为 https://github.com/jmichas/SignalRF。它的运行方式与 .Net 客户端大致相同。使用示例可在 github 站点上找到。
【讨论】: