diff --git a/daphne/http_protocol.py b/daphne/http_protocol.py index e4af30e..32dc276 100755 --- a/daphne/http_protocol.py +++ b/daphne/http_protocol.py @@ -308,7 +308,7 @@ class HTTPFactory(http.HTTPFactory): routed appropriately. """ - def __init__(self, channel_layer, action_logger=None, send_channel=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None): + def __init__(self, channel_layer, action_logger=None, send_channel=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None, websocket_handshake_timeout=5): http.HTTPFactory.__init__(self) self.channel_layer = channel_layer self.action_logger = action_logger @@ -327,6 +327,7 @@ class HTTPFactory(http.HTTPFactory): self.ws_factory.setProtocolOptions( autoPingTimeout=ping_timeout, allowNullOrigin=True, + openHandshakeTimeout=websocket_handshake_timeout ) self.ws_factory.protocol = WebSocketProtocol self.ws_factory.reply_protocols = self.reply_protocols diff --git a/daphne/server.py b/daphne/server.py index d3fb754..20b19cb 100755 --- a/daphne/server.py +++ b/daphne/server.py @@ -37,7 +37,8 @@ class Server(object): proxy_forwarded_address_header=None, proxy_forwarded_port_header=None, force_sync=False, - verbosity=1 + verbosity=1, + websocket_handshake_timeout=5 ): self.channel_layer = channel_layer self.endpoints = endpoints or [] @@ -69,6 +70,7 @@ class Server(object): # channel layer's group_expiry value if present, or one day if not. self.websocket_timeout = websocket_timeout or getattr(channel_layer, "group_expiry", 86400) self.websocket_connect_timeout = websocket_connect_timeout + self.websocket_handshake_timeout = websocket_handshake_timeout self.ws_protocols = ws_protocols self.root_path = root_path self.force_sync = force_sync @@ -92,7 +94,8 @@ class Server(object): ws_protocols=self.ws_protocols, root_path=self.root_path, proxy_forwarded_address_header=self.proxy_forwarded_address_header, - proxy_forwarded_port_header=self.proxy_forwarded_port_header + proxy_forwarded_port_header=self.proxy_forwarded_port_header, + websocket_handshake_timeout=self.websocket_handshake_timeout ) if self.verbosity <= 1: # Redirect the Twisted log to nowhere