A WebSockets abstraction for the Padrino Ruby Web Framework to manage channels, users and events regardless of the underlying WebSockets implementation.
- SpiderGazelle a LibUV application server.
- Puma >= 2.0. (*)
- Thin (*)
- Rainbows (*) (**)
- Goliath (*) (**)
- Phusion Passenger >= 4.0 with nginx >= 1.4 (*) (**)
(*) Supported through faye-websocket-ruby.
(**) Untested.
Add this line to your application's Gemfile
:
gem 'padrino-websockets'
# Uncomment the following line if you're using a Faye backend
# gem 'faye-websocket'
And then execute:
$ bundle
Or install it yourself as:
$ gem install padrino-websockets
Add this line to your main application's file (app/app.rb
):
register Padrino::WebSockets
Then in any controller or in the app itself, define a WebSocket channel:
websocket :channel do
on :ping do |message|
send_message(:ping, session['websocket_user'], {pong: true, data: message})
broadcast(:ping, {pong: true, data: message, broadcast: true})
end
end
How to use it on a browser?
var connection = new WebSocket('ws://localhost:3000/channel');
connection.onopen = function(message) {
console.log('connected to channel');
connection.send(JSON.stringify({event: 'ping', some: 'data'}));
}
connection.onmessage = function(message) {
console.log('message', JSON.parse(message.data));
}
// TODO Implement on the backend
connection.onerror = function(message) {
console.error('channel', JSON.parse(message.data));
}
- Fork it ( http://github.com//padrino-websockets/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Made with <3 by @dariocravero at UXtemple.
Heavily inspired by @stakach's example.