2011-03-04 19 views
8

En Smack API, hay una clase de configuración para la conexión, descrito en esta páginadiferencia entre nombre de servidor XMPP y nombre de servicio XMPP?

ConnectionConfiguration

Estoy confundido acerca de la distinción entre el nombre del servicio y el nombre del servidor.

Supongamos que tengo un equipo denominado "mybox.mydomain.com", y tengo ejabberd en él con un host configurado llamado "myhost" (usando la línea {hosts, ["myhost"]}. en ejabbed.cfg),

¿cuál es la nombre de host, nombre del servidor y nombre del servicio en este caso?

Respuesta

8
  • myhost: nombre del servicio (o XMPP dominio)
  • mybox.mydomain.com: nombre de host y el nombre del servidor.

Puede alojar un dominio XMPP sobre cualquier host, siempre que establezca los registros SRV directamente en el DNS o si el cliente especifica a qué host se supone que se conecta (como el correo electrónico).

+1

para que el nombre de host y el nombre de servidor sean siempre iguales? – Jus12

+1

Sí, son sinónimos. – cstar

3

Piensa en el JID que estás utilizando para iniciar sesión, que contiene username @domain. El domain es el nombre lógico del servicio que está utilizando. Para algunos servicios, como jabber.org, el servicio se ejecuta en un cuadro que tiene el mismo nombre que el servicio. Para muchos otros, como WebEx Connect y Google Talk, el dominio del servicio es un punto de partida para descubrir dónde abrir un socket, pero no el nombre de la máquina. Si todo está configurado correctamente, puede buscar el nombre de la máquina para conectarse en el DNS usando un SRV record. Por ejemplo, el uso de excavación:

$ dig +short -t SRV _xmpp-server._tcp.gmail.com 
20 0 5269 xmpp-server4.l.google.com. 
20 0 5269 xmpp-server2.l.google.com. 
20 0 5269 xmpp-server1.l.google.com. 
5 0 5269 xmpp-server.l.google.com. 
20 0 5269 xmpp-server3.l.google.com. 

Si el dominio de servicio no está configurado correctamente en el DNS, o simplemente está probando cosas, a menudo es útil ser capaz de especificar esta conexión de host por separado del dominio. Así que para su ejemplo, se debería utilizar:

ConnectionConfiguration("mybox.mydomain.com", 
         5222, 
         "myhost"); 

Si alguna vez desea este servicio para tener acceso a las personas fuera de su sentido de red (cliente a servidor o servidor a servidor), que haría para cambiar el nombre de su dominio de servicio para que sea algo totalmente calificado, al cual puede adjuntar registros SRV para que las utilicen esas entidades externas.