#!/usr/bin/env ruby require 'socket' require 'io/console' HOST = 'localhost' PORT = 6789 VERSION = 0.01 socket = TCPSocket.new(HOST, PORT) puts "PORT: #{PORT}" puts "HOST: #{HOST}" #reader = Thread.new do Thread.new do loop do msg = socket.gets exit 0 unless msg ver, msg = msg.split('|',2) next unless ver.to_f <= VERSION next unless msg != nil # In message version 0.01 and lower, # all messages are in an assumed format... row,col,chars = msg.split('|',3) print "\x1b[#{row};#{col}H#{chars}\x1b[A" end end while (char = STDIN.noecho(&:getch)) exit unless char != "\x03" # ^C exit unless char != "\x04" # ^D next unless char.ord >= 0x20 # Non printing next unless char.ord != 0x7F # DEL (Non print) socket.puts "#{VERSION}|#{char}" end