Padrino Websockets
A WebSockets abstraction for the Padrino Ruby Web Framework to manage channels, users and events regardless of the underlying WebSockets implementation.
Current support
- 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.
Installation
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
Usage
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 ||
(:ping, session['websocket_user'], {pong: true, data: })
broadcast(:ping, {pong: true, data: , 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));
}
Contributing
- 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
Contributors
Made with <3 by @dariocravero at UXtemple.
Heavily inspired by @stakach's example.