blob: db36f3b86e200df65b039dffa4c6ca37ce584db7 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from mod_pywebsocket import common
from mod_pywebsocket.extensions import PerMessageDeflateExtensionProcessor
from mod_pywebsocket.stream import create_header
def _get_permessage_deflate_extension_processor(request):
for extension_processor in request.ws_extension_processors:
if isinstance(extension_processor, PerMessageDeflateExtensionProcessor):
return extension_processor
return None
def web_socket_do_extra_handshake(request):
processor = _get_permessage_deflate_extension_processor(request)
assert processor is not None
# Remove extension processors other than
# PerMessageDeflateExtensionProcessor to avoid conflict.
request.ws_extension_processors = [processor]
def web_socket_transfer_data(request):
line = request.ws_stream.receive_message()
# Hello
payload = b'\xf2\x48\xcd\xc9\xc9\x07\x00\x00\x00\xff\xff'
# Strip \x00\x00\xff\xff
stripped = payload[:-4]
header = create_header(
common.OPCODE_TEXT,
len(payload),
fin=0,
rsv1=1,
rsv2=0,
rsv3=0,
mask=False)
request.ws_stream._write(header + payload)
header = create_header(
common.OPCODE_CONTINUATION,
len(stripped),
fin=1,
rsv1=0,
rsv2=0,
rsv3=0,
mask=False)
request.ws_stream._write(header + stripped)
# vi:sts=4 sw=4 et