69 lines
1.3 KiB
Ruby
69 lines
1.3 KiB
Ruby
#!/usr/bin/env ruby -wKU
|
|
|
|
$: << "."
|
|
|
|
require 'ggs-network.rb'
|
|
require 'ggs-delegate.rb'
|
|
|
|
class Chat
|
|
include GGSDelegate
|
|
|
|
def initialize
|
|
print "Table token (empty for new): "
|
|
table_token = gets.chomp
|
|
@ggs_network = GGSNetwork.new(self, table_token)
|
|
@ggs_network.connect("ggs.jeena.net", 9000)
|
|
end
|
|
|
|
def ggsNetworkReady(ggs_network, am_i_host)
|
|
unless am_i_host
|
|
source_code = File.open("chat_server.js", "rb").read
|
|
@ggs_network.define(source_code)
|
|
else
|
|
ggsNetworkDefined(ggs_network, true)
|
|
end
|
|
end
|
|
|
|
def ggsNetworkDefined(ggs_network, defined)
|
|
if defined
|
|
print "Your nickname: "
|
|
nick = gets.chomp
|
|
@ggs_network.sendCommand("/nick", nick)
|
|
Thread.new {
|
|
loop do
|
|
input
|
|
end
|
|
}
|
|
else
|
|
source_code = File.open("chat_server.js", "rb").read
|
|
@ggs_network.define(source_code)
|
|
end
|
|
end
|
|
|
|
def ggsNetworkReceivedCommandWithArgs(ggs_network, command, args)
|
|
case command
|
|
when "message" then message(args)
|
|
when "notice" then notice(args)
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def message(message)
|
|
puts message
|
|
end
|
|
|
|
def notice(notice)
|
|
puts "<#{notice}>"
|
|
end
|
|
|
|
def input
|
|
message = gets.chomp
|
|
@ggs_network.sendCommand("message", message)
|
|
end
|
|
|
|
end
|
|
|
|
if __FILE__ == $0
|
|
Chat.new
|
|
end
|