Project

uv-rays

0.01
No release in over 3 years
Low commit activity in last 3 years
Opinionated abstractions for Libuv
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.4.2
~> 11.2
~> 3.5
~> 0.9

Runtime

>= 4, < 6
~> 0.1
~> 0.3
~> 0.8
>= 3.0, < 5.0
~> 0.6
~> 1.2
 Project Readme

uv-rays

Build Status

UV-Rays was designed to eliminate the complexities of high-performance threaded network programming, allowing engineers to concentrate on their application logic.

Core Features

  1. TCP (and UDP) Connection abstractions
  2. Advanced stream tokenization
  3. Scheduled events (in, at, every, cron)
  4. HTTP 1.1 compatible client support

This adds to the features already available from Libuv on which the gem is based

Support

UV-Rays supports all platforms where ruby is available. Linux, OSX, BSD and Windows. MRI, jRuby and Rubinius.

Run gem install uv-rays to install

Getting Started

Here's a fully-functional echo server written with UV-Rays:

 require 'uv-rays'

 module EchoServer
  def on_connect(socket)
    @ip, @port = socket.peername
    logger.info "-- #{@ip}:#{@port} connected"
  end

  def on_read(data, socket)
    write ">>>you sent: #{data}"
    close_connection if data =~ /quit/i
  end

  def on_close
    puts "-- #{@ip}:#{@port} disconnected"
  end
end

reactor {
  UV.start_server "127.0.0.1", 8081, EchoServer
}

Integrations

UV-Rays works with many existing GEMs by integrating into common HTTP abstraction libraries