예제 #1
0
 def test_parse_wss_scheme_when_missing_resource(self):
     c = WebSocketBaseClient(url="wss://127.0.0.1")
     self.assertEqual(c.scheme, "wss")
     self.assertEqual(c.host, "127.0.0.1")
     self.assertEqual(c.port, 443)
     self.assertEqual(c.resource, "/")
     self.assertEqual(c.bind_addr, ("127.0.0.1", 443))
예제 #2
0
 def test_parse_wss_scheme_with_port(self):
     c = WebSocketBaseClient(url="wss://127.0.0.1:9090")
     self.assertEqual(c.scheme, "wss")
     self.assertEqual(c.host, "127.0.0.1")
     self.assertEqual(c.port, 9090)
     self.assertEqual(c.resource, "/")
     self.assertEqual(c.bind_addr, ("127.0.0.1", 9090))
예제 #3
0
 def test_parse_ws_scheme(self):
     c = WebSocketBaseClient(url="ws://127.0.0.1/")
     self.assertEqual(c.scheme, "ws")
     self.assertEqual(c.host, "127.0.0.1")
     self.assertEqual(c.port, 80)
     self.assertEqual(c.resource, "/")
     self.assertEqual(c.bind_addr, ("127.0.0.1", 80))
예제 #4
0
 def test_parse_ws_scheme_with_query_string(self):
     c = WebSocketBaseClient(url="ws://127.0.0.1/?token=value")
     self.assertEqual(c.scheme, "ws")
     self.assertEqual(c.host, "127.0.0.1")
     self.assertEqual(c.port, 80)
     self.assertEqual(c.resource, "/?token=value")
     self.assertEqual(c.bind_addr, ("127.0.0.1", 80))
예제 #5
0
    def test_invalid_response_headers(self, sock):

        for key_header, invalid_value in ((b'upgrade', b'boom'),
                                          (b'connection', b'bim')):
            s = MagicMock()
            sock.socket.return_value = s
            sock.getaddrinfo.return_value = [
                (socket.AF_INET, socket.SOCK_STREAM, 0, "", ("127.0.0.1", 80,
                                                             0, 0))
            ]
            c = WebSocketBaseClient(url="ws://127.0.0.1/?token=value")

            status_line = b"HTTP/1.1 101 Switching Protocols"
            headers = {
                b"connection": b"Upgrade",
                b"Sec-Websocket-Version": b"13",
                b"Content-Type": b"text/plain;charset=utf-8",
                b"Sec-Websocket-Accept":
                b64encode(sha1(c.key + WS_KEY).digest()),
                b"upgrade": b"websocket",
                b"Date": b"Sun, 26 Jul 2015 12:32:55 GMT",
                b"Server": b"ws4py/test"
            }

            headers[key_header] = invalid_value

            request = [status_line
                       ] + [k + b" : " + v
                            for (k, v) in headers.items()] + [b'\r\n']
            s.recv.return_value = b"\r\n".join(request)

            self.assertRaises(HandshakeError, c.connect)
            s.shutdown.assert_called_once_with(socket.SHUT_RDWR)
            s.close.assert_called_once_with()
            sock.reset_mock()
예제 #6
0
    def test_parse_unix_schemes(self):
        c = WebSocketBaseClient(url="ws+unix:///my.socket")
        self.assertEqual(c.scheme, "ws+unix")
        self.assertEqual(c.host, "localhost")
        self.assertIsNone(c.port)
        self.assertEqual(c.unix_socket_path, "/my.socket")
        self.assertEqual(c.resource, "/")
        self.assertEqual(c.bind_addr, "/my.socket")

        c = WebSocketBaseClient(url="wss+unix:///my.socket")
        self.assertEqual(c.scheme, "wss+unix")
        self.assertEqual(c.host, "localhost")
        self.assertIsNone(c.port)
        self.assertEqual(c.unix_socket_path, "/my.socket")
        self.assertEqual(c.resource, "/")
        self.assertEqual(c.bind_addr, "/my.socket")
예제 #7
0
    def test_connect_and_close(self, sock):

        s = MagicMock()
        sock.socket.return_value = s
        sock.getaddrinfo.return_value = [(socket.AF_INET, socket.SOCK_STREAM,
                                          0, "", ("127.0.0.1", 80, 0, 0))]

        c = WebSocketBaseClient(url="ws://127.0.0.1/?token=value")

        s.recv.return_value = b"\r\n".join([
            b"HTTP/1.1 101 Switching Protocols", b"Connection: Upgrade",
            b"Sec-Websocket-Version: 13",
            b"Content-Type: text/plain;charset=utf-8",
            b"Sec-Websocket-Accept: " +
            b64encode(sha1(c.key + WS_KEY).digest()), b"Upgrade: websocket",
            b"Date: Sun, 26 Jul 2015 12:32:55 GMT", b"Server: ws4py/test",
            b"\r\n"
        ])

        c.connect()
        s.connect.assert_called_once_with(("127.0.0.1", 80))

        s.reset_mock()
        c.close(code=1006, reason="boom")
        args = s.sendall.call_args_list[0]
        f = Frame()
        f.parser.send(args[0][0])
        f.parser.close()
        self.assertIn(b'boom', f.unmask(f.body))
예제 #8
0
    def test_empty_response(self, sock):

        s = MagicMock()
        sock.socket.return_value = s
        sock.getaddrinfo.return_value = [(socket.AF_INET, socket.SOCK_STREAM,
                                          0, "", ("127.0.0.1", 80, 0, 0))]

        c = WebSocketBaseClient(url="ws://127.0.0.1/?token=value")

        s.recv.return_value = b""
        self.assertRaises(HandshakeError, c.connect)
        s.shutdown.assert_called_once_with(socket.SHUT_RDWR)
        s.close.assert_called_once_with()
예제 #9
0
    def test_invdalid_response_code(self, sock):

        s = MagicMock()
        sock.socket.return_value = s
        sock.getaddrinfo.return_value = [(socket.AF_INET, socket.SOCK_STREAM,
                                          0, "", ("127.0.0.1", 80, 0, 0))]

        c = WebSocketBaseClient(url="ws://127.0.0.1/?token=value")

        s.recv.return_value = b"\r\n".join([
            b"HTTP/1.1 200 Switching Protocols", b"Connection: Upgrade",
            b"Sec-Websocket-Version: 13",
            b"Content-Type: text/plain;charset=utf-8",
            b"Sec-Websocket-Accept: " +
            b64encode(sha1(c.key + WS_KEY).digest()), b"Upgrade: websocket",
            b"Date: Sun, 26 Jul 2015 12:32:55 GMT", b"Server: ws4py/test",
            b"\r\n"
        ])

        self.assertRaises(HandshakeError, c.connect)
        s.shutdown.assert_called_once_with(socket.SHUT_RDWR)
        s.close.assert_called_once_with()
예제 #10
0
from ws4py.client import WebSocketBaseClient
import json
import ssl

ws = WebSocketBaseClient(url='wss://localhost:8888/websocket',
                         ssl_options={
                             "cert_reqs": ssl.CERT_NONE,
                             "ssl_version": ssl.PROTOCOL_TLSv1_2
                         })
info = {'Type': 'Client', 'Request': 'EnvironmentInfo'}
print("trying to connect")
ws.connect()
ws.send(json.dumps(info))
예제 #11
0
#!/usr/bin/python
#cat file | ./replay.py

from ws4py.client import WebSocketBaseClient
import time
import sys
import json

ws = WebSocketBaseClient('ws://127.0.0.1:9001/')
ws.connect()

k = 0
data = {'CMD': [], 'DATA': []}

for line in sys.stdin:
    line2 = line.replace(':', ',').rstrip()
    rawdata = line2.split(',')
    pixels = []
    pixels.append(rawdata[1])
    pixels.append(rawdata[2])
    pixels.append(rawdata[3])

    data["DATA"].append(pixels)
    data.update({"CMD": "DRAW"})
    json_data = json.dumps(data)
    ws.send(json_data)
    time.sleep(0.007)
    k = 0
    data["DATA"] *= 0
예제 #12
0
파일: chropy.py 프로젝트: mtnmts/Chropy
 def _new_ws(self, ws_url):
     con = WebSocketBaseClient(ws_url)
     con.connect()
     return con