WEBSocket
Establish a websocket communication using Ruby standard sockets or Celluloid::IO sockets if required.
Installation
Add this line to your application's Gemfile:
gem 'WEBSocket'
And then execute:
$ bundle
Or install it yourself as:
$ gem install WEBSocket
Usage
WEBSocket::Socket
This socket is a Ruby standard socket unless 'celluloid/io' has been required. In both cases, WEBSocket::Socket works as a wrapper of Ruby standard socket module.
require 'WEBSocket'
s = WEBSocket::Socket.new 'localhost', 4242
s.write "Ping"
pong = s.readpartial 4096
WEBSocket::server
This server is a Ruby standard server unless 'celluloid/io' has been required. In both cases, WEBSocket::Server works as a wrapper of Ruby standard socket module.
Here is a standard echoserver
require 'celluloid/io'
require 'WEBSocket'
class EchoServer
include Celluloid::IO
def initialize host, port
puts "*** Starting echo server on #{host}:#{port}"
@server = WEBSocket::Server.new host, port
run!
end
def finalize
@server.close if @server
end
def run
loop { handle_connection! @server.accept }
end
def handle_connection socket
_, port, host = socket.peeraddr
puts "*** Received connection from #{host}:#{port}"
loop { socket.write socket.readpartial 4096 }
rescue EOFError
puts "*** #{host}:#{port} disconnected"
socket.close
end
end
supervisor = EchoServer.supervise("127.0.0.1", 1234)
trap("INT") { supervisor.terminate; exit }
sleep
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request