diff --git a/src/http/web_socket.cr b/src/http/web_socket.cr index e2d56b8a7610..752c4482b40a 100644 --- a/src/http/web_socket.cr +++ b/src/http/web_socket.cr @@ -162,8 +162,7 @@ class HTTP::WebSocket @current_message.write @buffer[0, info.size] if info.final message = @current_message.to_s - @on_ping.try &.call(message) - pong(message) unless closed? + do_ping(message) @current_message.clear end in .pong? @@ -197,8 +196,7 @@ class HTTP::WebSocket end message = @current_message.gets_to_end - @on_close.try &.call(code, message) - close + do_close(code, message) @current_message.clear break @@ -208,6 +206,16 @@ class HTTP::WebSocket end end end + + private def do_close(code, message) + @on_close.try &.call(code, message) + close + end + + private def do_ping(message) + @on_ping.try &.call(message) + pong(message) unless closed? + end end require "./web_socket/*"