36 lines
794 B
Ruby
36 lines
794 B
Ruby
#!/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
|