Sha256: c58a2491c84d9157683c884d48b2034617e9e061db0af9ad154295bc53f86c5b

Contents?: true

Size: 862 Bytes

Versions: 4

Compression:

Stored size: 862 Bytes

Contents

require_relative '../lib/async/await'

require 'async/io'
require 'async/io/tcp_socket'

require 'pry'

class Echo
	include Async::Await
	include Async::IO
	
	async def handle(peer, address)
		data = peer.gets
		peer.puts("#{data} #{Time.now}")
	ensure
		peer.close
	end
	
	async def server
		puts "Binding server..."
		server = TCPServer.new("127.0.0.1", 9009)
		
		handle(*server.accept)
	ensure
		server.close rescue nil
	end

	async def client
		puts "Client connecting..."
		client = TCPSocket.new("127.0.0.1", 9009)
		
		client.puts("Hello World!")
		response = client.gets
		
		puts "Server said: #{response}"
	ensure
		client.close rescue nil
	end

	async def run
		puts "Creating server..."
		server
		
		puts "Creating client..."
		client
		
		puts "Run returning..."
	end
end

puts "Starting echo..."
echo = Echo.new
echo.run
puts "Echo finished :)"

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
async-await-0.5.0 examples/echo.rb
async-await-0.4.0 examples/echo.rb
async-await-0.3.0 examples/echo.rb
async-await-0.2.0 examples/echo.rb