针对浏览器的通知方案,上网查过 1、faye,就是 ruby-china 的方案 2、https://github.com/igrigorik/em-websocket 3、第三方(好像没有,只有推送到手机 APP 的) 4、SSE(但是对于 rails 好像资料不多) 需求很简单,就服务器推送到已经登录账号的浏览器客户端,作为一个实时消息通知。 类似有新的订单,然后通知到这个订单所属商铺!
1. ruby-china 用message bus
2. 是一种方案
3. 第三方有,pusher,github也在用这个服务,基础技术用的2
4. 没用过
主要还是根据用户量,和 具体的场景。关于这个 rails-china 上有一个主题是讲这个的
我们是这么做的,单独开发一个专门的订单消息推送服务(这里可以采用 Go 或者 Node 完成,因为这些语言天然支持并发)。用户浏览器打开之后,前端会与订单消息推送服务建立 WebSocket 长链接(长链接一定要做心跳包和重连机制,否则也会导致消息发送不及时),Rails 一旦接受到新的订单信息,就把消息 Pub 到 Redis 的 Channel 里面,而我们的订单消息推送服务也会去监听这个 Channel,一旦 Channel 有消息,就广播给所有的 WebSocket Clients。