2010-08-20 6 views
6

Me preguntaba si alguien aquí puede proporcionar algunos ejemplos de código en los siguientes escenarios. Estoy particularmente interesado en usar xmpppy para hacer esto porque ya estoy usando la biblioteca para mi aplicación, pero otras bibliotecas también están bien. Es desafortunado que el sitio web del proyecto xmpppy no tenga ejemplos de esto. Al navegar por los documentos de API avanzados/expertos, no pude encontrar la manera de hacerlo, ¿o el chat multiusuario (MUC) no es compatible con xmpppy?Cómo crear MUC y enviar mensajes al MUC existente usando Python y XMPP

  • crear un MUC invitando a usuarios específicos (por ejemplo 2 o 3) Mensaje de

  • Enviar a un MUC existente (suponiendo que se sabe que es la manija MUC JID o apodo)

  • mirar hacia arriba ya existente MUC en el servidor XMPP, obteniendo el JID o apodo, etc. Si esto se hace obteniendo la lista, solo queremos buscar MUC, ignorando a los usuarios.

me encontré con una especie de respuesta aquí, pero entonces probablemente tendría que aprender nuevas llamadas a la API de la biblioteca y encontrar la manera de hacer mis escenarios antes mencionados, ya que la muestra no cubre todos ellos:

pyxmpp: quick tutorial for creating a muc client?

realmente espero hacer un generador de carga que bombea mensajes a MUCs y la creación de grandes MUCs con muchos participantes. Ya tengo la parte en su lugar para transmitir mensajes a los destinatarios del usuario.

Respuesta

5

Aunque no conozco la interfaz específica de MUC, xmpppy admite mensajes personalizados, por lo que es compatible con XMPP completo.

Para participar en el chat, deberá enviar stranza presencia, conn.send(xmpp.Presence(to='{0}/{1}'.format(room, nick)))

Para enviar un mensaje a chatear:

stranza = "<message to='{0}' type='groupchat'><body>{1}</body></message>".format(room, text) 
    conn.send(stranza) 

En cuanto a la creación de nuevo chat o buscándolo en lista, no lo hago tener el código a la mano, pero es fácil de escribir de la misma manera, con tan sólo mirar hacia arriba stranzas necesarias en XEPs:

http://xmpp.org/extensions/xep-0045.html#createroom

http://xmpp.org/extensions/xep-0045.html#disco-rooms

http://xmpp.org/extensions/xep-0045.html#invite

5

Xmpppy hace uso de los servicios de soporte MUC, pero el apoyo es muy básico y se necesitará algún código extra para gestionar múltiples habitaciones.

Para "unirse" a una sala MUC, necesita transmitir su presencia al JID.

conn.send(xmpp.Presence(to="%s/%s" % (room, nickname))) 

Luego, para enviar mensajes, los envía usando el tipo de mensaje 'groupchat' a la habitación JID.

msg = xmpp.protocol.Message(body=text) 
msg.setTo(room) 
msg.setType('groupchat') 
conn.send(msg) 

En cuanto a su pregunta sobre la búsqueda de habitaciones MUC, eso se hará mediante el descubrimiento de servicios.

+0

sí, tiene razón con el descubrimiento podemos encontrar la lista de habitaciones, pero ¿cómo? –

Cuestiones relacionadas