【问题标题】:Flash to SignalR communicationFlash 到 SignalR 的通信
【发布时间】:2014-01-11 08:48:19
【问题描述】:

我们有一个通过 SignalR 来回实时通信的服务。我们有一个 HTML5 前端,但我想尝试使用 AIR 制作一个 Flash/Actionscript 前端,我可以将其编译为原生 iOS/Android 应用程序。是否有可用于与 SignalR 服务器集线器通信的库?

【问题讨论】:

    标签: flash actionscript signalr


    【解决方案1】:

    目前没有 Flash/ActionScript 代理生成器。鉴于 ActionScript 基本上只是 JavaScript,因此创建起来相当简单。您需要做的就是创建一个自定义的IJavaScriptProxyGenerator 实现,它会发出一个代理,该代理可以最好地利用并将其自身暴露给ActionScript 运行时。

    您可以将DefaultJavaScriptProxyGenerator 克隆为一个起点(称为ActionScriptProxyGenerator),然后只需替换实现中发出基于jQuery 的模式/impl 的部分以发出基于ActionScript 的模式/impl。

    然后您只需点击 Hub 端点将脚本下载到 Flash 中(或者您可以将其保存并直接静态构建到 Flash 组件中),然后您就可以开始运行了。

    如果你最终这样做了,我相信 SignalR 项目和其他 Flash 开发者会喜欢你回馈它,所以如果你这样做,请务必发送拉取请求!

    【讨论】:

    • ActionScript 不是“只是”JavaScript。 JavaScript 不是强类型,但 ActionScript 是。
    • 谢谢,我确切地知道 ActionScript 是什么以及它与 JavaScript 的不同之处。作为记录,它不必是强类型的(即 var[:*]),这使它完全像 JavaScript。无论如何,在代理生成器实现中显然要更改的一件事是在生成代理时向参数/返回值添加强类型。由于您可以完全访问 .NET 签名,因此您可以非常轻松地映射内部类型,并根据需要为签名中使用的任何自定义类发出强大的 ActionScript 类型。
    • 恐怕那会走得太远。希望有一些“开箱即用”的代码:-) 感谢您的解释!
    • ActionScript 并不完全像 JavaScript。例如,JavaScript 有两个不同的运算符“typeof”和“instanceof”,它们的工作方式不同且完全不一致。一个只会识别原始类型,而另一个不会识别 some 原始类型以及 null 和未定义值的抛出和错误。这是史诗般的失败。请参阅:tobyho.com/2011/01/28/checking-types-in-javascript 另一方面,ActionScript 具有强类型,可以专门使用“is”关键字来正确识别类型,而不会引发错误。 AS3 将 AS2 和 JavaScript 抛在了脑后。
    【解决方案2】:

    如果您仍然感兴趣,我在这里有一个通过 javascript 桥接至 as3 的 signalR 的完整工作演示:

    https://github.com/blinemedical/SignalRToAs3

    repo 自述文件解释了正在发生的事情以及 .net 中的可编译后端和 as3/flex 中的前端以演示正在发生的事情。该示例使用旧版本的 fluorine 进行对象序列化,但任何版本都应该可以工作。如果您有任何问题,请随时提出

    【讨论】:

      【解决方案3】:

      您可能有几个选择:

      1. 使用FluorineFX,开源项目,并查看发布者/消费者的使用情况以进行实时通信。 FluorineFX 会将强类型化的 .Net 对象转换为 ActionScript 对象,从而为您节省大量的序列化和反序列化时间。您还可以使用 FluorineFX 进行 RPC 调用以及非实时通信。

      2. 如果您更喜欢受支持的商业产品,请使用 WebOrb.NET。 WebOrb 是全面的,并且已经存在了很长时间。它具有 FluorineFX 的所有优势,只是它是一个闭源产品。

      3. 自 2001 年以来,Flash 一直支持通过 XMLSocket 进行实时、有状态的通信,这与 WebSocket 类似。您可以让 SignalR 以 XML 格式将对象发布到 XMLSocket。您必须使用此选项编写自己的 XML 序列化器和反序列化器,而且性能会更差,因为 XML 解析要慢得多。

      【讨论】:

        【解决方案4】:

        如果有人对此仍然感兴趣,我有一个 SignalR Flex/AS3 客户端 swc,地址为 https://github.com/jmichas/SignalRF。它的运行方式与 .Net 客户端大致相同。使用示例可在 github 站点上找到。

        【讨论】:

          猜你喜欢
          • 2012-09-15
          • 1970-01-01
          • 2010-11-05
          • 2020-07-10
          • 1970-01-01
          • 1970-01-01
          • 2010-11-24
          • 1970-01-01
          • 2015-02-09
          相关资源
          最近更新 更多