No estoy seguro de que la sincronización de Chrome use xmpp, al menos en el nivel cuando tiene que intercambiar información con el cliente. Utiliza la tecnología Google de "buffer de protocolo". El protocolo se proporciona mediante el uso de archivos de descripción de protocolo .proto y puede convertirlo a los objetos de su idioma mediante el uso de un compilador especial. El servidor de sincronización parece descansar en https://clients4.google.com/chrome-sync y el cliente envía solicitudes POST con el cuerpo binario donde se coloca el mensaje tipeado ClientToServerMessage. Aquí está la salida desde la primera conexión al servidor de sincronización. El primer objeto Python de salida es una impresión de la variable WSGI 'environ' donde también se colocan los encabezados HTTP. El segundo objeto (después de '====') es un mensaje de protocolo real.
{'CONTENT_LENGTH': '54',
'CONTENT_TYPE': 'application/octet-stream',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_AUTHORIZATION': 'GoogleLogin auth=MKhiqZsdz2RV4WrUJzPltxc2smTMcRnlfPALTOpf-Xdy9vsp6yUpS5cGuND0awqrYVUK4lhOJlh6OMsg093eBRghGGIgvWUTzU8PUvquy_c8Xn4sRiz_3tVJcke5eXi3q4qFDa6iVuEbT_0QhyPOjIQyeDOKRpZzMR3rpHsAs0ptFiTtUeTHsoIeUFT9nZPYzkET4-yHbDAp45_dxWdb-U6DPg24',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_HOST': 'localhost:8080',
'HTTP_USER_AGENT': 'Chrome MAC 0.4.21.6 (130497)-devel',
'PATH_INFO': '/chrome-sync/dev/command/',
'QUERY_STRING': 'client_id=SOME_SPECIAL_STRING',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '59031',
'REQUEST_METHOD': 'POST',
'SCRIPT_NAME': '',
'SERVER_NAME': 'vian-bizon.local',
'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.0',
'SERVER_SOFTWARE': 'gevent/1.0 Python/2.6',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x100416140>,
'wsgi.input': <gevent.pywsgi.Input object at 0x102a04250>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'https',
'wsgi.version': (1, 0)}
'==================================='
share: "[email protected]"
protocol_version: 30
message_contents: GET_UPDATES
get_updates {
caller_info {
source: NEW_CLIENT
notifications_enabled: false
}
fetch_folders: true
from_progress_marker {
data_type_id: 47745
token: ""
notification_hint: ""
}
}
debug_info {
events {
type: INITIALIZATION_COMPLETE
}
events_dropped: false
}
Esto sucede para la autenticación basada en OAuth. Puede ver el token de OAuth en el campo HTTP_AUTHORIZATION. El token de OAuth se le proporciona cuando interactúa con el cuadro de diálogo HTML 'Inicio de sesión de cuenta de Google'. No estoy seguro, pero parece que la API para obtener un token de acceso para los servicios de Google está disponible públicamente.
Si usted está buscando XMPP auth lugar, consulte la descripción del mecanismo de autenticación X-GOOGLE-TOKEN aquí: Authenticate to Google Talk (XMPP, Smack) using an authToken
Para la autorización X-OAuth2, puede acceder a la información aquí: https://developers.google.com/talk/jep_extensions/oauth
Y una muestra aquí: http://pits.googlecode.com/svn/trunk/xmpp.c
Tenga en cuenta que puede agregar flujo de la corriente XMPP a los archivos de registro de Chrome pobladas en cada ejecución del navegador - chrome_debug.log. Para habilitar esto, ejecute Chrome con las siguientes opciones: --enable-logging --v = 2
¡Gracias por su respuesta! También noté que Chrome se conectaba a ese servidor, pero creo que solo es para suscribirse a las notificaciones de sincronización a través de XMPP o para registrar ese cliente/navegador con los servidores de sincronización. Leí en una presentación de Google que la sincronización de pestañas se realiza a través de XMPP para minimizar la carga y la complejidad del servidor (imagínense 10 millones de navegadores Chrome sondeando un servidor cada minuto para verificar las actualizaciones de sincronización). Pero creo que tienes razón y que los mensajes XMPP son protobuffs, algo con lo que tengo que lidiar tan pronto como me conecto a los servidores ... –
¿Has logrado conectarte a xMPp de sincronización cromática usando Smack? ¿Cómo se obtiene la ficha de Oauth? – rustyx
@rustyx: No, lamentablemente no he ... // no he notado vians edit hasta ahora - ¡muchas gracias, voy a ver esto! –