Sha256: bd902ead7a2b423333a6e0372eb6bccfb32d285a1889438dc8fd1669c076fc74

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

# Hara

[![Gem Version](https://badge.fury.io/rb/hara.png)](http://badge.fury.io/rb/hara)
[![Build Status](https://travis-ci.org/jjyr/hara.png?branch=master)](https://travis-ci.org/jjyr/hara)

Hara is a simple framework, help you build async & concurrent websocket server.

Hara's async ability from [em-websocket](https://github.com/igrigorik/em-websocket),

Hara's concurrent ability from [celluloid](https://github.com/celluloid/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*
```ruby
#test.rb
require 'hara'

class Echo 
  include Hara::App

  define_action :echo do |str|
    socket.send str
  end
end
```

*client*
```javascript
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

```ruby
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

1. Fork it
2. Feel free to send pull requests

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hara-0.2.1 README.md