From: Justin Collins Date: 2008-09-19T07:18:49+09:00 Subject: Re: eventmachine client server problem Bala Murugan wrote: > Hi All > > My Server code is > $stderr.sync = $stdout.sync = true > require 'rubygems' > require 'eventmachine' > > module EchoServer > def receive_data data > puts "Server received: #{data}" > send_data ">>>you sent: #{data}" > puts "Server sent: >>>you sent: #{data}" > (puts "CLOSING"; send_data "quit"; close_connection(true); > EM.stop) if data =~ /quit/i > end > end > > EM::run{ > EM::start_server "127.0.0.1", 8100, EchoServer > } > > > Client code is > > $stderr.sync = $stdout.sync = true > require 'rubygems' > require 'eventmachine' > > class EchoClient < EM::Connection > def receive_data data > puts data > puts "Client Received: #{data}" > (puts "CLOSING"; close_connection(false); EM.stop) if data =~ > /quit/i > end > end > cnt=0 > EM::run { > emc = EM::connect "127.0.0.1", 8100, EchoClient > EM.add_periodic_timer(5) do > cnt +=1; > if cnt < 3 > emc.send_data "Message: #{cnt}" > else > emc.send_data "quit" > end > end > } > #### End client code #### > > > > > > Server Output is > > C:\sandbox\ruby_files>ruby serv2.rb > Server received: Message: 1 > Server sent: >>>you sent: Message: 1 > Server received: Message: 2 > Server sent: >>>you sent: Message: 2 > Server received: quit > Server sent: >>>you sent: quit > CLOSING > > Client Output is > > C:\sandbox\ruby_files>ruby clnt2.rb > >>>> you sent: Message: 1 >>>> > Client Received: >>>you sent: Message: 1 > >>>> you sent: Message: 2 >>>> > Client Received: >>>you sent: Message: 2 > > problem is server shuts down before sending the message.Any Help ? > > Thanks > > Bala > Maybe try using close_connection(true) or close_connection_after_writing. -Justin