Project

spockets

0.01
No commit activity in last 3 years
No release in over 3 years
Socket helper library
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 0.2.3
 Project Readme

Spockets¶ ↑

Spockets is a simple library for dealing with multiple sockets. You supply a socket, and one or more blocks to execute, and Spockets will make sure those blocks get executed when something comes in over the wire. It’s just that simple.

This library makes use of a thread pool for running user defined blocks. This setup allows us to use a single thread for socket monitoring, as well as prevents long running blocks from delaying everybody else.

install (easy):¶ ↑

gem install spockets

install (less easy):¶ ↑

git clone http://github.com/spox/spockets.git
cd spockets && gem build *.gemspec && gem install ./

install (less easy that’s a little easier)¶ ↑

rip makes it easy to install directly from a github repository.

Testing¶ ↑

Spockets is currently tested on:

  • Ruby 1.8.6-p383

  • Ruby 1.8.7-p248

  • Ruby 1.9.1-p376

  • JRuby 1.4.0

It has RDocs. They are short, but will be helpful and you should really consider giving them a look.

Examples are usually helpful, so here we go:

Code:

require 'socket'
require 'spockets'
spockets = Spockets::Spockets.new

server = TCPServer.new('localhost', 4000)
socket = TCPSocket.new('localhost', 4000)
rsocket = server.accept
output = []
spockets.add(rsocket){|s|output << s.strip}
spockets.add(rsocket, 'data'){|s, d| output << "#{d}: #{s.strip}"}
spockets.on_close(rsocket){|s| output << "closed: #{s}"}
socket.puts "fubar"
socket.close
sleep(0.01)
p output

=> ["fubar", "data: fubar", "closed: #<TCPSocket:0xb7637bdc>"]

Last remarks¶ ↑

If you find any bugs, please report them through github. If you are in need of any help, you can generally find me on DALnet and Freenode.

License¶ ↑

Spockets is licensed under the LGPLv3
Copyright (c) 2009 spox <spox@modspox.com>