def post(self, session_id): self.preflight() self.handle_session_cookie() self.disable_cache() session = self._get_session(session_id) if session is None or session.is_closed: self.set_status(404) return data = bytes_to_str(self.request.body) ctype = self.request.headers.get('Content-Type', '').lower() if ctype == 'application/x-www-form-urlencoded': if not data.startswith('d='): LOG.exception('jsonp_send: Invalid payload.') self.write("Payload expected.") self.set_status(500) return data = unquote_plus(data[2:]) if not data: LOG.debug('jsonp_send: Payload expected.') self.write("Payload expected.") self.set_status(500) return try: messages = proto.json_decode(data) except Exception: # TODO: Proper error handling LOG.debug('jsonp_send: Invalid json encoding') self.write("Broken JSON encoding.") self.set_status(500) return try: session.on_messages(messages) except Exception: LOG.exception('jsonp_send: on_message() failed') session.close() self.write('Message handler failed.') self.set_status(500) return self.write('ok') self.set_header('Content-Type', 'text/plain; charset=UTF-8') self.set_status(200)
def on_message(self, message): # SockJS requires that empty messages should be ignored if not message or not self.session: return try: msg = proto.json_decode(bytes_to_str(message)) if isinstance(msg, list): self.session.on_messages(msg) else: self.session.on_messages((msg, )) except Exception: LOG.exception('WebSocket') # Close session on exception #self.session.close() # Close running connection self.abort_connection()
def on_message(self, message): # SockJS requires that empty messages should be ignored if not message or not self.session: return try: msg = proto.json_decode(bytes_to_str(message)) if isinstance(msg, list): self.session.on_messages(msg) else: self.session.on_messages((msg,)) except Exception: LOG.exception('WebSocket') # Close session on exception #self.session.close() # Close running connection self.abort_connection()
def post(self, session_id): self.preflight() self.handle_session_cookie() self.disable_cache() session = self._get_session(session_id) if session is None or session.is_closed: self.set_status(404) return data = self.request.body if not data: self.write("Payload expected.") self.set_status(500) return try: messages = proto.json_decode(bytes_to_str(data)) except: # TODO: Proper error handling self.write("Broken JSON encoding.") self.set_status(500) return try: session.on_messages(messages) except Exception: LOG.exception('XHR incoming') session.close() self.set_status(500) return self.set_status(204) self.set_header('Content-Type', 'text/plain; charset=UTF-8')
def post(self, session_id): self.preflight() self.handle_session_cookie() self.disable_cache() session = self._get_session(session_id) if session is None or session.is_closed: self.set_status(404) return data = self.request.body if not data: self.write("Payload expected.") self.set_status(500) return try: messages = proto.json_decode(bytes_to_str(data)) except Exception: # TODO: Proper error handling self.write("Broken JSON encoding.") self.set_status(500) return try: session.on_messages(messages) except Exception: LOG.exception('XHR incoming') session.close() self.set_status(500) return self.set_status(204) self.set_header('Content-Type', 'text/plain; charset=UTF-8')