Sha256: 208d56d0c82c2ef61bf47c1781683d428bb181b6871cc5d2ba7cd697ff99360f
Contents?: true
Size: 918 Bytes
Versions: 14
Compression:
Stored size: 918 Bytes
Contents
#!/usr/bin/env ruby # # Run this as: bundle exec examples/echo_server.rb require 'bundler/setup' require 'celluloid/io' class EchoServer include Celluloid::IO finalizer :finalize def initialize(host, port) puts "*** Starting echo server on #{host}:#{port}" # Since we included Celluloid::IO, we're actually making a # Celluloid::IO::TCPServer here @server = TCPServer.new(host, port) async.run end def finalize @server.close if @server end def run loop { async.handle_connection @server.accept } end def handle_connection(socket) _, port, host = socket.peeraddr puts "*** Received connection from #{host}:#{port}" loop { socket.write socket.readpartial(4096) } rescue EOFError puts "*** #{host}:#{port} disconnected" socket.close end end supervisor = EchoServer.supervise("127.0.0.1", 1234) trap("INT") { supervisor.terminate; exit } sleep
Version data entries
14 entries across 14 versions & 1 rubygems