面膜&在python中取消屏蔽websocket数据

时间:2015-05-23 10:42:49

标签: python websocket mask

我正在尝试创建一个可以连接到websocket服务器的python websocket类,我需要帮助编写一个可以屏蔽和取消屏蔽数据的函数。我在PHP中有一个类似的websocket类,如下所示:

function unmask($text) {
$length = ord($text[1]) & 127;
if($length == 126) {
    $masks = substr($text, 4, 4);
    $data = substr($text, 8);
}
elseif($length == 127) {
    $masks = substr($text, 10, 4);
    $data = substr($text, 14);
}
else {
    $masks = substr($text, 2, 4);
    $data = substr($text, 6);
}
$text = "";
for ($i = 0; $i < strlen($data); ++$i) {
    $text .= $data[$i] ^ $masks[$i%4];
}
return $text;

}

function mask($text){
$b1 = 0x80 | (0x1 & 0x0f);
$length = strlen($text);

if($length <= 125)
    $header = pack('CC', $b1, $length);
elseif($length > 125 && $length < 65536)
    $header = pack('CCn', $b1, 126, $length);
elseif($length >= 65536)
    $header = pack('CCNN', $b1, 127, $length);
return $header.$text;
}

所以我尝试在Python中创建相同的东西:

def mask(text):
    b1 = 0x80 | (0x1 & 0x0f)
    length = len(text)

    if length <= 125:
        header = struct.pack('CC', b1, length)
    if length > 125 & length < 65536:
        header = struct.pack('CCn', b1, 126, length)
    if length <= 65536:
        header = struct.pack('CCNN', b1, 127, length)
    return header + text

它会返回错误:

  

struct format中的错误字符

如果有人能帮我写一个很棒的功能。谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了一个非常有用的脚本,完全符合我的需要。

  

http://sidekick.windforwings.com/2013/03/minimal-websocket-broadcast-server-in.html