Skip to content

Commit 0467f65

Browse files
committed
Add headers to websocket handler object
1 parent 56af8ae commit 0467f65

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

Diff for: websocket_server/websocket_server.py

+14
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import errno
1212
import threading
1313
from socketserver import ThreadingMixIn, TCPServer, StreamRequestHandler
14+
from urllib.parse import urlparse, parse_qs
1415

1516
from websocket_server.thread import WebsocketServerThread
1617

@@ -261,6 +262,8 @@ class WebSocketHandler(StreamRequestHandler):
261262

262263
def __init__(self, socket, addr, server):
263264
self.server = server
265+
self.headers = {}
266+
self.query_params = {}
264267
assert not hasattr(self, "_send_lock"), "_send_lock already exists"
265268
self._send_lock = threading.Lock()
266269
if server.key and server.cert:
@@ -412,6 +415,15 @@ def send_text(self, message, opcode=OPCODE_TEXT):
412415
with self._send_lock:
413416
self.request.send(header + payload)
414417

418+
def parse_query(self, http_get):
419+
"""
420+
Parses the query parameters from the first line.
421+
Example: "GET /?q=hello HTTP/1.1" will be parsed to {'q': ['hello']}
422+
"""
423+
query = http_get.split(" ")[1] # example: http_get = "GET /?q=hello HTTP/1.1"
424+
parsed_url = urlparse(query)
425+
return parse_qs(parsed_url.query)
426+
415427
def read_http_headers(self):
416428
headers = {}
417429
# first line should be HTTP GET
@@ -424,6 +436,8 @@ def read_http_headers(self):
424436
break
425437
head, value = header.split(':', 1)
426438
headers[head.lower().strip()] = value.strip()
439+
self.headers = headers
440+
self.query_params = self.parse_query(http_get)
427441
return headers
428442

429443
def handshake(self):

0 commit comments

Comments
 (0)