Rails Rails edge 终于加入了 live streaming..

Saito · 2012年08月04日 · 最后由 Rei 回复于 2014年07月08日 · 4111 次阅读

具体的情节参考 terderlove 的 Is it live?

如果你觉得文章太长的话,可以参考 Sinatra 的 README 中 Streaming Responses .

unicorn 默认会 30 秒切断长连接。推荐用 thin rainbows! 或 puma 测试。

要实现更丰富的应用体验,这个特性是必需的了。live streaming 可以减少对其他并发工具的依赖。

如果用来写实时通知或聊天之类的应用的话,以目前 Ruby 这些 Server 的运行模式,能承受的起么?进程都被占用完了

#3 楼 @huacnlee app server 需要改进,Is it live 里面写到能实现 live streaming 同时不阻塞进程的有 Rainbows!, Puma, 和 Thin。1 楼 passenger 里面的文章分析了多进程,多线程和事件模型的区别,以后 passenger 企业版会提供三种运行模式选择。

以后部署除了选择 server 外,还要选择运行模式,更多可玩的了~

貌似这个还不支持 ie

#4 楼 @Rei 请问这个问题有新进展吗?最近在研究 SSE 的用法,以下是我发现的问题,求解答 对于 SSE,好像是每个长链接都会占用一个 connection,以 puma 为例,如果我设置 16 个 thread,那就只支持 16 个用户同时在线了?而且每个 connection 都会占用一个 database 的 pool,即使调高了 thread, 还要同时调高 pool,那这种方式没法支持多用户同时在线吧?这样一来,SSE 看起来并不实用啊。 #3 楼 @huacnlee

#7 楼 @loveltyoic 我发觉好像没什么人在用。

#3 楼 @huacnlee 那为什么网上的一些文章都说 SSE 很适合聊天室之类的应用呢?如果一个用户就要占一个 thread,如果一万人同时在线,服务器不能开这么多 thread 吧。另外 ruby-china 中的 faye 好像也是有连接限制的?

---
address: 0.0.0.0
pid: tmp/pids/thin.pid
timeout: 120
port: 7000
log: log/thin.log
max_conns: 20480
require: []

max_persistent_conns: 4048
environment: production
servers: 2
daemonize: true
chdir: /home/ruby/www/ruby-china/current

这是指最大支持 4048 人同时在线吗?如果想支持更多用户怎么办,这个值总有上限的吧。

#8 楼 @Rei 还是得用 faye 了?

#10 楼 @loveltyoic 我没研究过 faye,Ruby China 这一块不是我做的。Basecamp 现在还用着轮询,github 是 websocket,但不清楚用什么实现。

#11 楼 @Rei 多谢!SSE 看来还不成熟啊,研究了两天,坑太多。

#12 楼 @loveltyoic 其实 SSE 是啥?

#7 楼 @loveltyoic 我们现在用的 Faye,WebSocket 的,Ruby EventMachine 跑的

#13 楼 @Rei Server Sent Event

#15 楼 @loveltyoic websocket 也是服务端推送啊。

#16 楼 @Rei SSE 用起来比较简单,直接用 HTTP 协议,网上也有一些比较的文章。

#14 楼 @huacnlee 很有帮助的信息,多谢,去研究下代码。

#17 楼 @loveltyoic 我意识是这个命名应该包括 websocket 啊。

#19 楼 @Rei 因为 websocket 有名字了吧。

服务器推送事件(Server-sent Events)是 HTML 5 规范中的一个组成部分,可以用来从服务端实时推送数据到浏览器端。相对于与之类似的 COMET 和 WebSocket 技术来说,服务器推送事件的使用更简单,对服务器端的改动也比较小。对于某些类型的应用来说,服务器推送事件是最佳的选择。

#20 楼 @loveltyoic 原来是规范的名字。现在应该用 WebSocket 的比较多。

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