15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import cgi 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from mod_pywebsocket import msgutil 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def web_socket_do_extra_handshake(request): 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) r = request.ws_resource.split('?', 1) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if len(r) == 1: 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) param = cgi.parse_qs(r[1]) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if 'protocol' in param: 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.ws_protocol = param['protocol'][0] 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def web_socket_transfer_data(request): 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) msgutil.send_message(request, request.ws_protocol) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) # Wait for a close message. 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) unused = request.ws_stream.receive_message() 22