Sha256: 1356176e1d1bd978b84ebde87cada3641e58b76ee3cc1976301604d429988594
Contents?: true
Size: 918 Bytes
Versions: 2
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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
celluloid-io-0.17.3 | examples/echo_server.rb |
celluloid-io-0.17.2 | examples/echo_server.rb |