Hara
Hara is a simple framework, help you build async & concurrent websocket server.
Hara's async ability from em-websocket,
Hara's concurrent ability from celluloid.
Yes, hara is a combination of them, eventmachine and celluloid work well together :)
Installation
Add this line to your application's Gemfile:
gem 'hara'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hara
BasicUsage
server
#test.rb
require 'hara'
class Echo
include Hara::App
define_action :echo do |str|
socket.send str
end
end
client
var msg = JSON.stringify({action: 'echo',args:['hello world']})
var ws = new WebSocket('ws://localhost:3210')
ws.onmessage = function(msg){alert(msg.data)}
//after a while
ws.send(msg)
//hello world
start server
ruby test.rb
ruby test.rb -h
to view options
Other Usages & How it work
require 'hara/base'
class Echo
#include Hara::App, make you Echo class become Celluloid::Actor and per actor handle a socket
include Hara::App
#Hara::App provide some callbacks
def after_connect
puts 'first called'
p headers
end
def before_action action, *args
puts 'called when action comming'
end
define_action :echo do |str|
puts "#{client_ip} #{client_port}"
socket.send str
end
def after_action action, *args
puts 'called when action complete'
end
end
#if you require 'hara/base' you need start server you self, like below
Hara::Server.start 'localhost', '3000'
RoadMap
js client is processing
Contributing
- Fork it
- Feel free to send pull requests