File tree Expand file tree Collapse file tree 5 files changed +56
-12
lines changed
Expand file tree Collapse file tree 5 files changed +56
-12
lines changed Original file line number Diff line number Diff line change 55# Copyright, 2021-2024, by Samuel Williams.
66
77require "async"
8- require "async/io/tcp_socket"
8+ require "socket"
9+
10+ RESPONSE = "HTTP/1.1 204 No Content\r \n Xonnection: close\r \n \r \n "
911
1012port = Integer ( ARGV . pop || 9090 )
1113
1214Async do |task |
13- server = Async :: IO :: TCPServer . new ( "localhost" , port )
15+ server = TCPServer . new ( "localhost" , port )
1416
1517 loop do
1618 peer , address = server . accept
1719
1820 task . async do
19- peer . recv ( 1024 )
20- peer . send ( "HTTP/1.1 204 No Content\r \n Connection: close\r \n \r \n " )
21+ while ( peer . recv ( 1024 ) rescue nil )
22+ sleep 0.02
23+ peer . send ( RESPONSE , 0 )
24+ end
25+ ensure
2126 peer . close
2227 end
2328 end
Original file line number Diff line number Diff line change 77require_relative "scheduler"
88require "io/nonblock"
99
10+ RESPONSE = "HTTP/1.1 204 No Content\r \n Connection: close\r \n \r \n "
11+
1012#scheduler = DirectScheduler.new
1113scheduler = Scheduler . new
1214Fiber . set_scheduler ( scheduler )
1315
1416port = Integer ( ARGV . pop || 9090 )
1517
16- RESPONSE = "HTTP/1.1 204 No Content\r \n Connection: close\r \n \r \n "
17-
1818Fiber . schedule do
1919 server = TCPServer . new ( "localhost" , port )
2020 server . listen ( Socket ::SOMAXCONN )
2121
2222 loop do
2323 peer , address = server . accept
24-
24+
2525 Fiber . schedule do
26- peer . readpartial ( 1024 ) rescue nil
27- peer . write ( RESPONSE )
26+ while ( peer . readpartial ( 1024 ) rescue nil )
27+ peer . write ( RESPONSE )
28+ end
29+
2830 peer . close
2931 end
3032 end
Original file line number Diff line number Diff line change 1+ GEM
2+ remote: https://rubygems.org/
3+ specs:
4+ async (2.23.1)
5+ console (~> 1.29)
6+ fiber-annotation
7+ io-event (~> 1.9)
8+ metrics (~> 0.12)
9+ traces (~> 0.15)
10+ console (1.30.2)
11+ fiber-annotation
12+ fiber-local (~> 1.1)
13+ json
14+ fiber-annotation (0.2.0)
15+ fiber-local (1.1.0)
16+ fiber-storage
17+ fiber-storage (1.0.0)
18+ io-event (1.10.0)
19+ json (2.10.2)
20+ metrics (0.12.2)
21+ traces (0.15.2)
22+
23+ PLATFORMS
24+ arm64-darwin-24
25+ ruby
26+
27+ DEPENDENCIES
28+ async
29+
30+ BUNDLED WITH
31+ 2.6.2
Original file line number Diff line number Diff line change 1+ source "https://rubygems.org"
2+
3+ gem "async"
Original file line number Diff line number Diff line change 66
77require "socket"
88
9- port = Integer ( ARGV . pop || 9090 )
9+ RESPONSE = "HTTP/1.1 204 No Content \r \n Connection: close \r \n \r \n "
1010
11+ port = Integer ( ARGV . pop || 9090 )
1112server = TCPServer . new ( "localhost" , port )
1213
1314loop do
1415 peer , address = server . accept
1516
16- peer . recv ( 1024 )
17- peer . send ( "HTTP/1.1 204 No Content\r \n Connection: close\r \n \r \n " , 0 )
17+ while ( peer . recv ( 1024 ) rescue nil )
18+ peer . send ( RESPONSE , 0 )
19+ end
20+
1821 peer . close
1922end
2023
You can’t perform that action at this time.
0 commit comments