From e1c10949271a9cd3cbad86d05ce0436f2e79bc65 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 9 Jul 2010 08:30:15 +0000 Subject: http_response: allow Cramp 0.11 to send proper WS headers Cramp needs to override our normal header sending for (old) WebSockets connections. --- lib/rainbows/http_response.rb | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/rainbows/http_response.rb b/lib/rainbows/http_response.rb index cf17aa1..40a7330 100644 --- a/lib/rainbows/http_response.rb +++ b/lib/rainbows/http_response.rb @@ -1,10 +1,27 @@ # -*- encoding: binary -*- # deprecated, use Rainbows::Response instead -# Cramp 0.11 relies on this +# Cramp 0.11 relies on this, and is only activated by Cramp # :enddoc: -class Rainbows::HttpResponse - class << self - include Rainbows::Response - alias write write_response +if defined?(Cramp) && defined?(Rainbows::EventMachine::Client) + class Rainbows::HttpResponse + class << self + include Rainbows::Response + alias write write_response + end + end + + module Rainbows::EventMachine::CrampSocket + def write_header(_, response, out) + if websocket? + write web_socket_upgrade_data + web_socket_handshake! + out = nil # disable response headers + end + super(self, response, out) + end + end + + class Rainbows::EventMachine::Client + include Rainbows::EventMachine::CrampSocket end end -- cgit v1.2.3-24-ge0c7