summaryrefslogtreecommitdiff
path: root/websockify
diff options
context:
space:
mode:
Diffstat (limited to 'websockify')
-rw-r--r--websockify/websocket.py42
1 files changed, 27 insertions, 15 deletions
diff --git a/websockify/websocket.py b/websockify/websocket.py
index f0db3ba..5a819f7 100644
--- a/websockify/websocket.py
+++ b/websockify/websocket.py
@@ -158,19 +158,19 @@ class WebSocket(object):
if not path:
path = "/"
- self._queue_str("GET %s HTTP/1.1\r\n" % path)
- self._queue_str("Host: %s\r\n" % uri.hostname)
- self._queue_str("Upgrade: websocket\r\n")
- self._queue_str("Connection: upgrade\r\n")
- self._queue_str("Sec-WebSocket-Key: %s\r\n" % self._key)
- self._queue_str("Sec-WebSocket-Version: 13\r\n")
+ self.send_request("GET", path)
+ self.send_header("Host", uri.hostname)
+ self.send_header("Upgrade", "websocket")
+ self.send_header("Connection", "upgrade")
+ self.send_header("Sec-WebSocket-Key", self._key)
+ self.send_header("Sec-WebSocket-Version", 13)
if origin is not None:
- self._queue_str("Origin: %s\r\n" % origin)
+ self.send_header("Origin", origin)
if len(protocols) > 0:
- self._queue_str("Sec-WebSocket-Protocol: %s\r\n" % ", ".join(protocols))
+ self.send_header("Sec-WebSocket-Protocol", ", ".join(protocols))
- self._queue_str("\r\n")
+ self.end_headers()
self._state = "send_headers"
@@ -283,15 +283,15 @@ class WebSocket(object):
if self.protocol not in protocols:
raise Exception('Invalid protocol selected')
- self._queue_str("HTTP/1.1 101 Switching Protocols\r\n")
- self._queue_str("Upgrade: websocket\r\n")
- self._queue_str("Connection: Upgrade\r\n")
- self._queue_str("Sec-WebSocket-Accept: %s\r\n" % accept)
+ self.send_response(101, "Switching Protocols")
+ self.send_header("Upgrade", "websocket")
+ self.send_header("Connection", "Upgrade")
+ self.send_header("Sec-WebSocket-Accept", accept)
if self.protocol:
- self._queue_str("Sec-WebSocket-Protocol: %s\r\n" % self.protocol)
+ self.send_header("Sec-WebSocket-Protocol", self.protocol)
- self._queue_str("\r\n")
+ self.end_headers()
self._state = "flush"
@@ -447,6 +447,18 @@ class WebSocket(object):
return len(msg)
+ def send_response(self, code, message):
+ self._queue_str("HTTP/1.1 %d %s\r\n" % (code, message))
+
+ def send_header(self, keyword, value):
+ self._queue_str("%s: %s\r\n" % (keyword, value))
+
+ def end_headers(self):
+ self._queue_str("\r\n")
+
+ def send_request(self, type, path):
+ self._queue_str("%s %s HTTP/1.1\r\n" % (type.upper(), path))
+
def ping(self, data=b''):
"""Write a ping message to the WebSocket