コード例 #1
0
 def test_webframe_to_bytes_non_fragmented_with_mask(self):
     # generating a mask is usually random which is not good for testing
     WebSocketFrame.generate_mask = Mock(return_value=525161)
     f = WebSocketFrame(message="TEST DATA",
                        headers=WebSocketFrameHeaders(
                            mask=WebSocketFrame.generate_mask(),
                            mask_flag=1))
     self.assertEqual(f.to_bytes(), b'\x81\x89\x00\x08\x03iTMP= LB=A')
コード例 #2
0
 def observe(self, message, *args, connection=None, server=None, **kwargs):
     headers = WebSocketFrameHeaders(payload_length=len(message.message))
     server_message = WebSocketFrame(headers=headers,
                                     message=message.message)
     for server_connection in server.connections:
         if server_connection != connection:
             self.send_frame(server_connection, server_message)
コード例 #3
0
 def test_webframe_from_bytes_non_fragmented_with_mask(self):
     bstr = b'\x81\x89\x13}\xfd\xb7G8\xae\xe339\xbc\xe3R'
     reader = self._get_mock_bytes_reader(bytes=bstr)
     f = WebSocketFrame.from_bytes_reader(reader)
     self.assertEqual(f.headers.mask, 327024055)
     self.assertEqual(f.headers.payload_length, 9)
     self.assertEqual(f.message, "TEST DATA")
コード例 #4
0
 def test_webframe_from_bytes_non_fragmented_no_mask(self):
     bstr = b'\x81\tTEST DATA'
     reader = self._get_mock_bytes_reader(bytes=bstr)
     f = WebSocketFrame.from_bytes_reader(reader)
     self.assertEqual(f.message, "TEST DATA")
     self.assertEqual(f.headers.payload_length, 9)
     self.assertIsNone(f.headers.mask)
コード例 #5
0
 def test_webframe_from_bytes_non_fragmented(self):
     data = b'\x81\x89I\x96k\xa8\x1d\xd38\xfci\xd2*\xfc\x08'
     reader = self._get_mock_bytes_reader(bytes=data)
     f = WebSocketFrame.from_bytes_reader(reader)
     self.assertEqual(f.message, "TEST DATA")
     self.assertEqual(f.headers.payload_length, 9)
     self.assertEqual(f.headers.opcode, 1)
     self.assertEqual(f.headers.mask_flag, 1)
     self.assertEqual(f.headers.mask,
                      bits_value("01001001100101100110101110101000"))
コード例 #6
0
    def connection_handler(self, conn):
        bytes_reader = SocketBytesReader(conn)

        self.logger.debug("Websocket server handling incoming data")
        try:
            frame = WebSocketFrame.from_bytes_reader(bytes_reader)
        except (SocketException, ConnectionResetError):
            self.logger.warning(
                "Connection closed prematurely, marking for closing")
            conn.mark_for_closing()
            return None

        return frame
コード例 #7
0
 def observe(self, message, *args, connection=None, **kwargs):
     msg = WebSocketFrame.get_pong_frame(message=message)
     self.send_frame(connection, msg)
コード例 #8
0
 def close_connection(self, connection, message=None):
     # as soon as we know a CLOSE frame is received, send no other messages and close connection
     connection.clear_messages()
     msg = WebSocketFrame.get_close_frame(message)
     self.send_frame(connection, msg, flush_immediately=True)
     connection.close()
コード例 #9
0
 def observe(self, message, *args, connection=None, server=None, **kwargs):
     message = f"SteveSockets WebSocketServer has received your message of '{message.message}'!"
     connection.queue_message(
         WebSocketFrame.get_text_frame(message).to_bytes())
コード例 #10
0
 def test_webframe_to_bytes_non_fragmented_no_mask(self):
     f = WebSocketFrame(message="TEST DATA")
     bts = f.to_bytes()
     self.assertEqual(bts, b'\x81\tTEST DATA')
コード例 #11
0
 def test_webframe_premature_ending(self):
     bstr = b'\x819'
     reader = self._get_mock_bytes_reader(bytes=bstr)
     with self.assertRaises(StopIteration):
         WebSocketFrame.from_bytes_reader(reader)