enable 64-bit frames for large amounts of data
This commit is contained in:
		| @@ -23,10 +23,31 @@ class WebSocketConnection(object): | ||||
|  | ||||
|     def get_header(self, size, opcode): | ||||
|         ws_first_byte = 0b10000000 | (opcode & 0x0F) | ||||
|         if (size > 125): | ||||
|             return bytes([ws_first_byte, 126, (size>>8) & 0xff, size & 0xff]) | ||||
|         if (size > 2**16 - 1): | ||||
|             # frame size can be increased up to 2^64 by setting the size to 127 | ||||
|             # anything beyond that would need to be segmented into frames. i don't really think we'll need more. | ||||
|             return bytes([ | ||||
|                 ws_first_byte, | ||||
|                 127, | ||||
|                 (size >> 56) & 0xff, | ||||
|                 (size >> 48) & 0xff, | ||||
|                 (size >> 40) & 0xff, | ||||
|                 (size >> 32) & 0xff, | ||||
|                 (size >> 24) & 0xff, | ||||
|                 (size >> 16) & 0xff, | ||||
|                 (size >> 8) & 0xff, | ||||
|                 size & 0xff | ||||
|             ]) | ||||
|         elif (size > 125): | ||||
|             # up to 2^16 can be sent using the extended payload size field by putting the size to 126 | ||||
|             return bytes([ | ||||
|                 ws_first_byte, | ||||
|                 126, | ||||
|                 (size >> 8) & 0xff, | ||||
|                 size & 0xff | ||||
|             ]) | ||||
|         else: | ||||
|             # 256 bytes binary message in a single unmasked frame | ||||
|             # 125 bytes binary message in a single unmasked frame | ||||
|             return bytes([ws_first_byte, size]) | ||||
|  | ||||
|     def send(self, data): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jakob Ketterl
					Jakob Ketterl