Gem 基于 WebSocket 写了一个简单实时的 pusher 工具:SimplePusher

qichunren · 2014年05月18日 · 最后由 sunday35034 回复于 2014年05月20日 · 6725 次阅读
本帖已被管理员设置为精华贴

受 pusher,socket.io,slanger 等工具的影响,加上我目前的一个项目对实时方面的需要,又不希望太复杂和引入额外的组件,我就直接基于 websocket 做了这样一个工具,服务器端可以直接运行在基于像 Thin 等构建于 Eventmachine 之上的 Rails 项目或者 Sinatra 项目中。

用法

添加gem 'simple_pusher'Gemfile

然后添加初始化代码:

# config/initializers/simple_pusher.rb
EventMachine.next_tick do
  SimplePusher.setup do |config|
    config.port = 8088
    config.debug = false
  end
  SimplePusher.start
end

application.js 中添加//= require simple_pusher, 页面中添加 js 代码:

<script type="text/javascript">
    var simple_pusher = new SimplePusher("ws://<%= request.host %>:8088/");
    simple_pusher.broadcast("Hello everybody.");
</script>

服务器端的 API 有

SimplePusher.broadcast 方法向所有的连接客户端 push 消息 SimplePusher.on 处理客户端 emit 的消息

更多详细的信息直接看代码吧。https://github.com/qichunren/simple_pusher

和 faye 有啥区别吗?

#1 楼 @assyer yafe? 你是想说Faye吧。我这个还是很简单 (lou) 的,使用方便,对于我目前的项目来说已经够用了。

#1 楼 @assyer faye 不是 ws 协议的,似乎是 bayeux

#3 楼 @sunday35034 ws 只是 faye 支持的一种通讯机制

#2 楼 @qichunren 嗯嗯,你写的这个比起 Faye 简洁许多倒是。不过不知道在网络不稳定的情况下表现如何,Faye 那边貌似用到了心跳包来维持连接。

#4 楼 @ShiningRay 嗯,谢补充。看到 2 楼的就是 ws 的

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