No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
A WebSockets abstraction for the Padrino Ruby Web Framework to manage channels, users and events regardless of the underlying WebSockets implementation.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.5
>= 0
 Project Readme

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

(*) 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 |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));
}

Contributing

  1. Fork it ( http://github.com//padrino-websockets/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Contributors

Made with <3 by @dariocravero at UXtemple.

Heavily inspired by @stakach's example.