Chat mit Ruby… eine Client-Server Appliaktion
Nachfolgend ein kleines Beispiel, wie mit Ruby ein Chat geschreiben werden kann. Dieser besteht aus einer Client-Komponente und einer Server-Komponente. Das ganze funktioniert über die Konsole:
Der Server sieht folgendermaßen aus:
#!/usr/bin/ruby
require 'thread' require 'socket'
host, port = ARGV[0], ARGV[1]
sr = Mutex.new
server = TCPServer.new(host, port)
clients = Array.new
while (socket = server.accept)
sr.synchronize do clients << socket end
swt = Thread.new(socket) do | the_socket |
while line = the_socket.gets
break if /'QUIT/ =~ line
sr.synchronize do
clients.each do | client |
client.puts line if client != the_socket
end
end
end
sr.synchronize do clients.delete(socket) end
socket.close
end
end
Und der Client:
#!/usr/bin/ruby
require 'socket'
require 'thread'
host = ARGV[0] || ‘localhost’
port = ARGV[1] || 1111
socket = TCPSocket.new(host, port)
benutzer = (`users`).split(" ").uniq.to_s
t = Thread.new do
while line = socket.gets
puts "Received: #{line}"
end
socket.close
end
while line = "#{benutzer}: "+ $stdin.gets #Read input
break if /^exit/ =~ line
socket.puts line
end
socket.puts 'QUIT'
t.join
Leider weiß ich nicht mehr, wo ich die Vorlage zu diesem Chat her habe… Er zeigt jedoch sehr gut, wie man mit Ruby Sockets arbeiten kann.
Leave a Reply
You must be logged in to post a comment.