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)_GOODBYE_MESSAGE = u'Goodbye' 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def web_socket_do_extra_handshake(_request): 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pass # Always accept. 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def web_socket_transfer_data(request): 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while True: 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) line = request.ws_stream.receive_message() 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if line is None: 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if isinstance(line, unicode): 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.ws_stream.send_message(line, binary=False) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if line == _GOODBYE_MESSAGE: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.ws_stream.send_message(line, binary=True) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def web_socket_passive_closing_handshake(request): 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return request.ws_close_code, request.ws_close_reason 27