精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-25
其实就是 ruby event based asynchronous server, 服务器/客户端用web sockets通信的
传统的网络服务器(Apache等)都是基于同步处理(客户端发Request,服务器处理, 返回结果)。 这样的结果是一个客户端的读写操作会占用服务器系统资源,是得其他客户端得请求要等待其结束才能被处理,或者只能多线程。 异步处理采用基于事件得方式,实现反应器得的样式(reactor pattern). 服务器接到请求后交给后台处理, 然后立刻接下一个请求, 后台处理好之后服务器受到通知,然后再以回叫(callback)的方式通知客户端。
举个呼叫中心的例子:
同步服务器:
客户: 我要找xxx资料 接线员: 你等一下啊别挂。。 我让同事(后台服务)帮我找找看。。 (10分钟后) 找到了。。 你的资料是xxx 客户:谢谢
异步服务器: 客户1:我要找xxx资料 接线员: 知道了。挂电话吧, 找到我给你打回去 。 。。 那谁(后台服务),帮我找xxx 客户2:我要找yyy资料 接线员: 知道了。挂电话吧, 找到我给你打回去 。 。。 那谁(后台服务),帮我找yyy ...
可见异步是非常有效的方式,可以是服务器能同时处理的请求大大增加。 非常适用于即时网络(real time web), 多用户互动游戏等应用上。 其具体的实现方法有很多种, Socket.io, Python有Twisted, Ruby有基于EventMachine的Coolio, 再高层的抽象有Express.js, Cramp / Goliath等等. 还有商业的应用比如Pusher
我做了些研究, 觉得最方便好用的还是Faye - 同时支持Node 和Ruby, 基于Rack,可做中间件, 很方便和Rails集成。
讲了这么多。。 我这周末准备用Faye做一个多用户的贪吃蛇游戏, 便做边学习异步。用到的技术会有 Rails, Faye, HTML5 (drawing and web sockets), jQuery, javascript等。 如果有人想一起学习, 可以报个名,我们可以约下时间一起做, 在网上找个聊天室或者IRC即时交流。
新手/中手不要害怕, 只要你有Rails基础就可以来做, 我可以帮助大家。。。高手们,我们需要你们
一些阅读资料
http://www.slideshare.net/igrigorik/event-driven-architecture-meshu-ilya-grigorik http://railscasts.com/episodes/260-messaging-with-faye http://faye.jcoglan.com/ http://www.slideshare.net/ismasan/websockets-and-ruby-eventmachine http://diveintohtml5.org/
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-25
还有, 最后所有代码公开,大家可以共享讨论 。
能不能做出来,做的好不好都无所谓, 主要是用这个机会学习交流。 |
|
返回顶楼 | |
发表时间:2011-05-25
如果只考虑HTML5的websocket的话这样的应用做起来很简单。
如果想兼容不支持HTML5的浏览器,前端用socket.io不错。不过socket.io目前只有nodejs的后端。 想用ruby做后端的话需要自己去处理各种transport: 引用 WebSocket
Adobe Flash Socket ActiveX HTMLFile (IE) XHR with multipart encoding XHR with long-polling JSONP polling (for cross-domain) 有个Socket.IO-rack的项目(https://github.com/markjeee/Socket.IO-rack)。 |
|
返回顶楼 | |
发表时间:2011-05-26
Hooopo, 不会太难, 应该几个小时可以搞定。我想就是基于HTML5的Web Socket, 主要目的也就是学习,不是当作产品去开发。
Socket.io应该是Web Client 做的最好的,但如你所说它需要Node的服务器。。 我其实觉得就语言来讲JavaScript最适合写事件服务器的, Ruby并不有最好做反应器的编程模式。有机会我会做个Node的应用试试。 Faye比较吸引我的是因为基于Rack, 而且看起来要比直接用em-websocket要方便的多。 还有就是做出来可以放在Heroku上面,不需要花钱Host. 要不要一起做? |
|
返回顶楼 | |
发表时间:2011-05-26
对这个主题很感兴趣,不过这周没时间啊,周末要搬家:-)
|
|
返回顶楼 | |
发表时间:2011-05-26
good idea:)等待公布irc
|
|
返回顶楼 | |
发表时间:2011-05-26
很感兴趣 不过偶是新手 可以伐
|
|
返回顶楼 | |
发表时间:2011-05-26
最后修改:2011-05-26
最近正好在研究rails+comet,LZ算我一个
分享的一些资源很给力,学到了很多。 |
|
返回顶楼 | |
发表时间:2011-05-26
看起来很有意思,目前没有做过有关异步的应用,报个名
|
|
返回顶楼 | |
发表时间:2011-05-26
0 ruby 可以报名吗?
|
|
返回顶楼 | |