(self)
| 237 | return True |
| 238 | |
| 239 | def handshake(self): |
| 240 | self._log.debug('handshake') |
| 241 | key = self.headers['Sec-WebSocket-Key'] |
| 242 | self.session = None |
| 243 | if 'cookie' in self.headers: |
| 244 | if self.headers['cookie']!=None: |
| 245 | self.session = parse_session_cookie(self.headers['cookie']) |
| 246 | if self.session == None: |
| 247 | return False |
| 248 | if not self.session in clients.keys(): |
| 249 | return False |
| 250 | |
| 251 | digest = hashlib.sha1((key.encode("utf-8")+self.magic)) |
| 252 | digest = digest.digest() |
| 253 | digest = base64.b64encode(digest) |
| 254 | response = 'HTTP/1.1 101 Switching Protocols\r\n' |
| 255 | response += 'Upgrade: websocket\r\n' |
| 256 | response += 'Connection: Upgrade\r\n' |
| 257 | response += 'Sec-WebSocket-Accept: %s\r\n\r\n' % digest.decode("utf-8") |
| 258 | self._log.info('handshake complete') |
| 259 | self.request.sendall(response.encode("utf-8")) |
| 260 | self.handshake_done = True |
| 261 | |
| 262 | #if an update happens since the websocket connection to its handshake, |
| 263 | # it gets not displayed. it is required to inform App about handshake done, |
| 264 | # to get a full refresh |
| 265 | clients[self.session].websocket_handshake_done(self) |
| 266 | |
| 267 | return True |
| 268 | |
| 269 | def on_message(self, message): |
| 270 | global runtimeInstances |
no test coverage detected