def _send_handshake(self): response = [] # 5.2 10. send the following line. response.append('HTTP/1.1 101 WebSocket Protocol Handshake\r\n') # 5.2 11. send the following fields to the client. response.append( format_header(common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE_HIXIE75)) response.append( format_header(common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append( format_header(common.SEC_WEBSOCKET_LOCATION_HEADER, self._request.ws_location)) response.append( format_header(common.SEC_WEBSOCKET_ORIGIN_HEADER, self._request.ws_origin)) if self._request.ws_protocol: response.append( format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) # 5.2 12. send two bytes 0x0D 0x0A. response.append('\r\n') # 5.2 13. send /response/ response.append(self._request.ws_challenge_md5) raw_response = ''.join(response) self._request.connection.write(raw_response) self._logger.debug('Sent server\'s opening handshake: %r', raw_response)
def _send_handshake(self): response = [] # 5.2 10. send the following line. response.append('HTTP/1.1 101 WebSocket Protocol Handshake\r\n') # 5.2 11. send the following fields to the client. response.append(format_header( common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE_HIXIE75)) response.append(format_header( common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append(format_header( common.SEC_WEBSOCKET_LOCATION_HEADER, self._request.ws_location)) response.append(format_header( common.SEC_WEBSOCKET_ORIGIN_HEADER, self._request.ws_origin)) if self._request.ws_protocol: response.append(format_header( common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) # 5.2 12. send two bytes 0x0D 0x0A. response.append('\r\n') # 5.2 13. send /response/ response.append(self._request.ws_challenge_md5) raw_response = ''.join(response) self._request.connection.write(raw_response) self._logger.debug('Sent server\'s opening handshake: %r', raw_response)
def _send_handshake(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') response.append(format_header( common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append(format_header( common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append(format_header( common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) if self._request.ws_protocol is not None: response.append(format_header( common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append(format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, format_extensions(self._request.ws_extensions))) response.append('\r\n') raw_response = ''.join(response) self._request.connection.write(raw_response) self._logger.debug('Sent server\'s opening handshake: %r', raw_response)
def _send_handshake(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') response.append( format_header(common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append( format_header(common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append( format_header(common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) # TODO(tyoshino): Encode value of protocol and extensions if any # special character that we have to encode by some manner. if self._request.ws_protocol is not None: response.append( format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if self._request.ws_extensions is not None: response.append( format_header(common.SEC_WEBSOCKET_EXTENSIONS_HEADER, format_extensions(self._request.ws_extensions))) response.append('\r\n') raw_response = ''.join(response) self._logger.debug('Opening handshake response: %r', raw_response) self._request.connection.write(raw_response)
def _send_handshake(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') response.append(format_header( common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append(format_header( common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append(format_header( common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) # TODO(tyoshino): Encode value of protocol and extensions if any # special character that we have to encode by some manner. if self._request.ws_protocol is not None: response.append(format_header( common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if self._request.ws_extensions is not None: response.append(format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, format_extensions(self._request.ws_extensions))) response.append('\r\n') raw_response = ''.join(response) self._logger.debug('Opening handshake response: %r', raw_response) self._request.connection.write(raw_response)
def _send_handshake(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') response.append( format_header(common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append( format_header(common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append( format_header(common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) if self._request.ws_protocol is not None: response.append( format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append( format_header(common.SEC_WEBSOCKET_EXTENSIONS_HEADER, format_extensions(self._request.ws_extensions))) response.append('\r\n') raw_response = ''.join(response) self._request.connection.write(raw_response) self._logger.debug('Sent server\'s opening handshake: %r', raw_response)
def _create_handshake_response(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') # WebSocket headers response.append(format_header( common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append(format_header( common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append(format_header( common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) if self._request.ws_protocol is not None: response.append(format_header( common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append(format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, common.format_extensions(self._request.ws_extensions))) # MOZILLA: Add HSTS header if requested to if self._request.sts is not None: response.append(format_header("Strict-Transport-Security", self._request.sts)) # /MOZILLA # Headers not specific for WebSocket for name, value in self._request.extra_headers: response.append(format_header(name, value)) response.append('\r\n') return ''.join(response)
def _create_handshake_response(self, accept): response = [] response.append(u'HTTP/1.1 101 Switching Protocols\r\n') # WebSocket headers response.append( format_header(common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append( format_header(common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append( format_header(common.SEC_WEBSOCKET_ACCEPT_HEADER, accept.decode('UTF-8'))) if self._request.ws_protocol is not None: response.append( format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append( format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, common.format_extensions(self._request.ws_extensions))) # Headers not specific for WebSocket for name, value in self._request.extra_headers: response.append(format_header(name, value)) response.append(u'\r\n') return u''.join(response)
def _create_handshake_response(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') response.append(format_header( common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append(format_header( common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append(format_header( common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) if self._request.ws_protocol is not None: response.append(format_header( common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append(format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, common.format_extensions(self._request.ws_extensions))) response.append('\r\n') return ''.join(response)
def _create_handshake_response(self, accept): response = [] response.append('HTTP/1.1 101 Switching Protocols\r\n') # WebSocket headers response.append( format_header(common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE)) response.append( format_header(common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE)) response.append( format_header(common.SEC_WEBSOCKET_ACCEPT_HEADER, accept)) if self._request.ws_protocol is not None: response.append( format_header(common.SEC_WEBSOCKET_PROTOCOL_HEADER, self._request.ws_protocol)) if (self._request.ws_extensions is not None and len(self._request.ws_extensions) != 0): response.append( format_header( common.SEC_WEBSOCKET_EXTENSIONS_HEADER, common.format_extensions(self._request.ws_extensions))) # MOZILLA: Add HSTS header if requested to if self._request.sts is not None: response.append( format_header("Strict-Transport-Security", self._request.sts)) # /MOZILLA # Headers not specific for WebSocket for name, value in self._request.extra_headers: response.append(format_header(name, value)) response.append('\r\n') return ''.join(response)