require 'nanomsg' # https://bitbucket.org/kschiess/nanomsg class Chat def initialize(name, url) @name = name @socket = NanoMsg::PairSocket.new() if @name == 'allan' @socket.bind(url) else @socket.connect(url) end @request = nil @response = nil receive() send() @request.join() @response.join() end def receive() @response = Thread.new do loop { message = @socket.recv() print("\r") puts message print('> ') } end end def send() @request = Thread.new do loop { print('> ') message = $stdin.gets().chomp() @socket.send("#{@name}: #{message}") } end end end if ARGV.count() != 2 puts "Usage: #{$0} " exit(1) end name = ARGV.shift() url = ARGV.shift() Chat.new(name, url)