EventMachine based chat

Language: Ruby

#!/usr/bin/env ruby

require 'rubygems'
require 'eventmachine'

module Chat

  # Called after the connection with a client has been established
  def post_init
    # Add ourselves to the list of clients
    (@@connections ||= []) << self
    send_data "Please enter your name: "
  end

  # Called on new incoming data from the client
  def receive_data data
    # The first message from the user is its name
    @name ||= data.strip

    @@connections.each do |client|
      # Send the message from the client to all other clients
      client.send_data "#{@name} says: #{data}"
    end
  end
end

# Start a server on localhost, using port 8081 and hosting our Chat application
EM::run do
  EM::start_server "0.0.0.0", 8081, Chat
end
Reveal More
Added over 2 years ago by Twitterprofilephoto_normal zh