Skip to content

Instantly share code, notes, and snippets.

@genslein
Forked from EvanBrightside/chat_server.rb
Created September 13, 2023 22:40
Show Gist options
  • Save genslein/25e1145422e2625125c76492c5d9de7c to your computer and use it in GitHub Desktop.
Save genslein/25e1145422e2625125c76492c5d9de7c to your computer and use it in GitHub Desktop.
Chat Server Ruby
require 'socket'
def welcome(chatter)
chatter.print 'Welcome! Please enter your name: '
chatter.readline.chomp
end
def broadcast(message, chatters)
chatters.each do |chatter|
chatter.puts message
end
end
s = TCPServer.new(3939)
chatters = []
while (chatter = s.accept)
Thread.new(chatter) do |c|
name = welcome(chatter)
broadcast("#{name} has joned", chatters)
chatters << chatter
begin
loop do
line = c.readline
broadcast("#{name}: #{line}", chatters)
end
rescue EOFError
c.close
chatters.delete(c)
broadcast("#{name} has left", chatters)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment