Skip to content

Commit

Permalink
Refactor to use Connection#read and Connection#write.
Browse files Browse the repository at this point in the history
  • Loading branch information
ioquatix committed May 12, 2019
1 parent 778b0a0 commit 37819c9
Show file tree
Hide file tree
Showing 14 changed files with 37 additions and 45 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,17 @@ Async do |task|
Async::WebSocket::Client.open(endpoint) do |connection|
input_task = task.async do
while line = stdin.read_until("\n")
connection.send_message({user: USER, text: line})
connection.write({user: USER, text: line})
connection.flush
end
end

connection.send_message({
connection.write({
user: USER,
status: "connected",
})

while message = connection.next_message
while message = connection.read
puts message.inspect
end
ensure
Expand All @@ -84,9 +84,9 @@ run lambda {|env|
Async::WebSocket::Server::Rack.open(env, protocols: ['ws']) do |connection|
$connections << connection

while message = connection.next_message
while message = connection.read
$connections.each do |connection|
connection.send_message(message)
connection.write(message)
connection.flush
end
end
Expand Down
4 changes: 2 additions & 2 deletions examples/chat/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
Async::WebSocket::Client.open(ENDPOINT) do |connection|
input_task = task.async do
while line = stdin.read_until("\n")
connection.send_message({text: line})
connection.write({text: line})
connection.flush
end
end

puts "Connected..."
while message = connection.next_message
while message = connection.read
puts "> #{message.inspect}"
end
ensure
Expand Down
10 changes: 5 additions & 5 deletions examples/chat/config.ru
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class Room

@connections.each do |connection|
@semaphore.async do
connection.send_message(message)
connection.write(message)
connection.flush
end
end
Expand All @@ -82,18 +82,18 @@ class Room
def open(connection)
self.connect(connection)

while message = connection.next_message
while message = connection.read
if message[:text] =~ /^\/(.*?)$/
begin
result = self.command($1)

if result.is_a? Hash
connection.send_message(result)
connection.write(result)
else
connection.send_message({result: result.inspect})
connection.write({result: result.inspect})
end
rescue
connection.send_message({error: $!.inspect})
connection.write({error: $!.inspect})
end
else
self.broadcast(message)
Expand Down
4 changes: 2 additions & 2 deletions examples/chat/multi-client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ def call
task.async do |subtask|
while connection = connections.dequeue
subtask.async(connection) do |subtask, connection|
pp connection.next_message
pp connection.read

while message = connection.next_message
while message = connection.read
pp message
end
ensure
Expand Down
4 changes: 2 additions & 2 deletions examples/mud/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
$stdout.write "> "

while line = stdin.read_until("\n")
connection.send_message({input: line})
connection.write({input: line})
connection.flush

$stdout.write "> "
end
end

while message = connection.next_message
while message = connection.read
$stdout.puts message
end
end
Expand Down
8 changes: 4 additions & 4 deletions examples/mud/config.ru
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class Room

def broadcast(message)
@users.each do |user|
user.send_message(message)
user.write(message)
user.flush
end
end
Expand Down Expand Up @@ -89,7 +89,7 @@ class User < Async::WebSocket::Connection
when "name"
@name = arguments.first
when "look"
self.send_message({room: @room.as_json})
self.write({room: @room.as_json})
else
if action = @room.actions[key]
action.call(self, *arguments)
Expand All @@ -101,7 +101,7 @@ class User < Async::WebSocket::Connection
end

def notify(text)
self.send_message({notify: text})
self.write({notify: text})
self.flush
end

Expand All @@ -127,7 +127,7 @@ class Server
Async::WebSocket::Server::Rack.open(env, connect: User) do |user|
@entrance.enter(user)

while message = user.next_message
while message = user.read
user.handle(message)
end
ensure
Expand Down
4 changes: 2 additions & 2 deletions examples/utopia/pages/server/controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
Async::WebSocket::Server.open(request.env) do |connection|
$connections << connection

while message = connection.next_message
while message = connection.read
$connections.each do |connection|
puts "Server sending message: #{message.inspect}"
connection.send_message(message)
connection.write(message)
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions examples/utopia/spec/website_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@
endpoint.connect do |socket|
connection = Async::WebSocket::Client.new(socket, "ws://localhost/server/connect")

connection.send_message(hello_message)
connection.write(hello_message)

message = connection.next_message
message = connection.read
expect(message).to be == hello_message
end
end
Expand Down
16 changes: 4 additions & 12 deletions lib/async/websocket/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,12 @@ def initialize(framer, protocol = nil, **options)

attr :protocol

def next_message
if frames = super
if frames.first.is_a? Protocol::WebSocket::TextFrame
buffer = frames.collect(&:unpack).join

return parse(buffer)
else
return frames
end
end
def read
parse(super)
end

def send_message(data)
send_text(dump(data))
def write(object)
super(dump(object))
end

def parse(buffer)
Expand Down
2 changes: 1 addition & 1 deletion spec/async/websocket/connection_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
expect(frame.mask).to be == subject.mask
end

subject.send_message({text: "Hello World"})
subject.write({text: "Hello World"})
end
end
6 changes: 3 additions & 3 deletions spec/async/websocket/server/rack/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
Async::WebSocket::Client.open(endpoint, headers: headers) do |connection|
input_task = task.async do
while line = stdin.read_until("\n")
connection.send_message({user: USER, text: line})
connection.write({user: USER, text: line})
connection.flush
end
end

connection.send_message({
connection.write({
user: USER,
status: "connected",
})

while message = connection.next_message
while message = connection.read
puts message.inspect
end
ensure
Expand Down
4 changes: 2 additions & 2 deletions spec/async/websocket/server/rack/config.ru
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ run lambda {|env|
$connections << connection

begin
while message = connection.next_message
while message = connection.read
$connections.each do |connection|
connection.send_message(message)
connection.write(message)
connection.flush
end
end
Expand Down
4 changes: 2 additions & 2 deletions spec/async/websocket/server/rack_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@

it "can make websocket connection to server" do
Async::WebSocket::Client.open(server_address) do |connection|
connection.send_message(message)
connection.write(message)

expect(connection.next_message).to be == message
expect(connection.read).to be == message

connection.close
end
Expand Down
2 changes: 1 addition & 1 deletion spec/async/websocket/upgrade.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def call(env)
write.close

read.each_line do |line|
connection.send_message({line: line})
connection.write({line: line})
end

# Gracefully close the connection:
Expand Down

0 comments on commit 37819c9

Please sign in to comment.