RubyConf 对 Flash Socket 的补充

qhwa · 2012年11月19日 · 最后由 tarzansos 回复于 2012年11月19日 · 4650 次阅读

RubyConf2012 大会上 @yedingding 分享的 Ruby Realtime web 中提到的几种技术方案选择,XHR polling、HTTP Long Polling、HTTPStream、Flash Socket、Web Socket,其中关于 Flash Socket 的描述我觉得可以探讨一下,正好我的工作和Ruby、Flash都有很多接触。

1. 误区: Flash Socket 需要 Flash Media Server 配合?

Socket 是一种简单、宽松的通信方式,HTTP 协议也是在 Socket 方式的基础上定了一些request和response的协议。Flash Socket 是在 Flash 应用程序中和服务器端建立一个 Socket 连接,至于后端是 Flash Media Server 还是开源的 Red5, 或是 Ruby Socket Server,都是可以的。只要遵循 Socket 的规范,前后端的实现都是任意组合的。前端可以是 Flash,可以是 Silverlight,也可以是 Java Applet。后端的选择就更多了。

2. 补充: Web Socket 在低级浏览器上的支持

低级浏览器(IE6、7、8)中可以利用 Flash Web Socket 做 JS Web Socket 方案的 fallback。 Flash 支持最底层的 Socket,也可以很容易实现 Web Socket、XML Socket 这些封装。我们开发过 Web 版的阿里旺旺聊天界面,客户端就是使用了 Flash Web Socket 为主, JS Web Socket 为 fallback 的方案 。然后封装了一个 Web Socket 组件,业务逻辑中不需要关心 Web Socket 是JS还是Flash实现。

虽然大家用Flash Socket的机会比较少,而且短期内 Flash Socket 必然被 JS web socket 或 Flash web socket 代替,个人认为以后Flash在桌面web上的机会会越来越少,但是目前Flash还是可以做一些HTML5的有益补充,所以我斗胆在 Ruby 社区抛个砖,说一下 Flash Socket 的东西,方便大家在技术选型的时候,当你的应用需要考虑低级浏览器的时候,当你的应用需要跨域realtime的时候,也可以考虑一下 Flash。

共收到 10 条回复

Flash Socket 这个话题不是整个分享的重点,现场 @yedingding 大大分享中学到好多技术和经验,在这里顺便感谢一下!~

as2的XMLSocket和as3的 flash.net.Socket 有什么区别

其实我觉得 Flash Socket 兼容性比websocket好, 至少现在很多系统,比如博彩行业,基本都是 Flash Socket 实现。

#2楼 @yakczh as2中的 XMLSocket 在 as3 中也有: net.flash.XMLSocket net.flash.Socket 非常底层,提供了 readBytesreadUnsignedBytereadObject 等等非常底层的接口,你可以获取到底层的Binary数据。 net.flash.XMLSocket 用XML传输一些文本数据,只提供了少量的数据操作接口,但是拿到XML数据后可以用XML的接口做很多事情

@qhwa 非常感谢你的指出,我没有好好去了解 Flash Socket 的具体实现,给大家错误的信息,不好意思。我刚才看了一下,是不是如果走 Ruby Socket Server 这种,就是自定义通讯协议,也可以达到目标?对 Flash 一直比较排斥,很多方面都不了解,你们能有 Web 旺旺这么好的实践平台,多跟大家分享一下这方面的知识,:)。至于 Fallback,比如 Socket.IO 这些库都已经做的很好了,比如可以优先用 WebSocket,如果不支持的话,自动 fallback 到 long polling, flash, etc,都非常的好用。如果考虑低级浏览器或者跨域的话,long polling 也是不错的方式。

#5楼 @yedingding 是的,自己写个 ruby 的 socket server,也可以达到目标的。 确实 long polling 大部分情况都可以作为不错的 fallback,如果不是对双向通信要求很高的应用,比如炒股软件啥的

说到 web 旺旺,我是参与开发前端的 web socket 组件,后端是用 Java 做的,只晓得我们的后端架构师非常给力,颠覆了我原先对一台服务器最大连接数的概念……

同事啊

#8楼 @huacnlee 握爪,还请教过你一些 ruby 问题哈,Ark 啥的

早期juggernaut就是使用flash Socket,flash Socket也可以做的很轻量。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册