受 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