1*6777b538SAndroid Build Coastguard Worker# Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Workerimport struct 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Workerfrom mod_pywebsocket import stream 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Workerdef web_socket_do_extra_handshake(_request): 11*6777b538SAndroid Build Coastguard Worker pass 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Workerdef web_socket_transfer_data(request): 15*6777b538SAndroid Build Coastguard Worker line = request.ws_stream.receive_message() 16*6777b538SAndroid Build Coastguard Worker if line is None: 17*6777b538SAndroid Build Coastguard Worker return 18*6777b538SAndroid Build Coastguard Worker if line == '-': 19*6777b538SAndroid Build Coastguard Worker data = b'' 20*6777b538SAndroid Build Coastguard Worker elif line == '--': 21*6777b538SAndroid Build Coastguard Worker data = b'X' 22*6777b538SAndroid Build Coastguard Worker else: 23*6777b538SAndroid Build Coastguard Worker code, reason = line.split(' ', 1) 24*6777b538SAndroid Build Coastguard Worker data = struct.pack('!H', int(code)) + reason.encode('utf-8') 25*6777b538SAndroid Build Coastguard Worker request.connection.write(stream.create_close_frame(data)) 26*6777b538SAndroid Build Coastguard Worker request.server_terminated = True 27*6777b538SAndroid Build Coastguard Worker # Wait for Close frame from client. 28*6777b538SAndroid Build Coastguard Worker request.ws_stream.receive_message() 29