Skip to content

Commit 96b948d

Browse files
committed
Wrap all serving code into a class, and make sure we're using the ThreadingMixIn
1 parent bde23bf commit 96b948d

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

websocket_server/websocket_server.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,6 @@ def try_decode_UTF8(data):
3535
except Exception as e:
3636
raise(e)
3737

38-
ROUTING_TABLE = {}
39-
40-
# Decorator for routing websocket handlers a la Flask
41-
def route(path):
42-
def decorate(fn):
43-
ROUTING_TABLE[path] = fn
44-
return fn
45-
return decorate
46-
4738
# +-+-+-+-+-------+-+-------------+-------------------------------+
4839
# |0| | | | | | 1 | 2 3 |
4940
# |0|1|2|3|4 5 6 7|8|9 0 1 2 3 4 5|6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1|
@@ -270,11 +261,23 @@ def calculate_response_key(cls, key):
270261
response_key = b64encode(hash.digest()).strip()
271262
return response_key.decode('ASCII')
272263

273-
def run_websocket_server():
274-
TCPServer.allow_reuse_address = True
275-
server = TCPServer(('127.0.0.1', 5001), WebSocketHandler)
276-
server.daemon_threads = True
277-
server.serve_forever()
278-
279-
def start_websocket_server():
280-
threading.Thread(target=run_websocket_server, daemon=True).start()
264+
class WebSocketServer(ThreadingMixIn, TCPServer):
265+
allow_reuse_address = True
266+
daemon_threads = True
267+
268+
def __init__(self, host, port):
269+
address = (host, port)
270+
# Have to init in both superclasses? Weird...
271+
super(TCPServer, self).__init__(address, WebSocketHandler)
272+
super(ThreadingMixIn, self).__init__(address, WebSocketHandler)
273+
self.routing_table = {}
274+
275+
# Decorator for routing websocket handlers a la Flask
276+
def route(self, path):
277+
def decorate(fn):
278+
self.routing_table[path] = fn
279+
return fn
280+
return decorate
281+
282+
def start(self):
283+
threading.Thread(target=self.serve_forever, daemon=True).start()

0 commit comments

Comments
 (0)