Enviar un uri de datos a través de la aplicación del canal de Google.

Estoy intentando enviar un uri de datos de una imagen que se ha tomado de un elemento de canvas a otro cliente a través del canal api.

Este es mi javascript:

var pictData = imageCanvas.toDataURL("image/png"); sendPictData(pictData); function sendPictData(pictData){ dataToSend = encodeURIComponent(pictData); sendMessage({type: 'blackboardBackground', image: dataToSend }); } function sendMessage(message){ var msgString = JSON.stringify(message); path = '/lessonarea/message?r={{ key }}' + '&u={{ me }}'; var xhr = new XMLHttpRequest(); xhr.open('POST', path, true); xhr.send(msgString); } 

Sigo recibiendo el error “InvalidMessageError” del registro del motor de la aplicación

La función sendMessage () funciona bien cuando se envía solo texto sin formato, pero parece que no puedo enviar un uri de datos.

Como se vio anteriormente, he tratado de codificar la url dentro del método sendPictData () pero esto no parece ayudar.

Aprecia cualquier ayuda que puedas dar.

Actualización : código del controlador de Python y salida del registro:

 class MessagePage(webapp2.RequestHandler): def post(self): message = self.request.body lessonRoomKey = self.request.get('r') user = self.request.get('u') with LOCK: lesson_room = LessonRoom.get_by_id(lessonRoomKey) if lesson_room: self.handle_message(lesson_room, user, message) else: logging.warning('Unknown Lesson room ' + lessonRoomKey) def handle_message(self, lessonRoom, user, message): message_obj = json.loads(message) logging.info("Message type = " + message_obj['type']) other_user = lessonRoom.get_other_user(user) lessonRoomKey = lessonRoom.key.id(); if other_user and lessonRoom.has_user(other_user): on_message(lessonRoom, other_user, message) def on_message(self, room, user, message): client_id = make_client_id(room, user) if room.is_connected(user): channel.send_message(client_id, message) 

Esta es la salida del registro:

 INFO 2013-07-30 21:39:22,582 lessonarea.py:364] Message type = blackboardBackground ERROR 2013-07-30 21:39:22,583 webapp2.py:1553] Traceback (most recent call last): File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 1536, in __call__ rv = self.handle_exception(request, response, e) File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 1530, in __call__ rv = self.router.dispatch(request, response) File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 1278, in default_dispatcher return route.handler_adapter(request, response) File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 1102, in __call__ return handler.dispatch() File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 572, in dispatch return self.handle_exception(e, self.app.debug) File "/home/alec/google_projects/google_appengine/lib/webapp2/webapp2.py", line 570, in dispatch return method(*args, **kwargs) File "/home/alec/google_projects/src/lessonarea.py", line 357, in post self.handle_message(lesson_room, user, message) File "/home/alec/google_projects/src/lessonarea.py", line 385, in handle_message on_message(lessonRoom, other_user, message) File "/home/alec/google_projects/src/lessonarea.py", line 168, in on_message channel.send_message(client_id, message) File "/home/alec/google_projects/google_appengine/google/appengine/api/channel/channel.py", line 209, in send_message raise InvalidMessageError InvalidMessageError 

Como se mencionó anteriormente, creo que el controlador funciona correctamente, ya que funciona bien cuando se envía un mensaje de texto sin formato.

La respuesta fue descubierta en los comentarios de dragonx, un simple descuido de mi parte.

El mensaje del canal superaba el límite de 32 kb. Cambió el tamaño de las imágenes y el código funcionó bien.