Mostrando entradas con la etiqueta xmpp. Mostrar todas las entradas
Mostrando entradas con la etiqueta xmpp. Mostrar todas las entradas

domingo, 7 de marzo de 2010

Jugando con XMPP(jabber) en .Net

5 comentarios

El protocolo XMPP conocido anteriormente como Jabber, es un protocolo libre basado en XML, su objetivo es la mensajería instantánea. Existen disimiles clientes de mensajería que soportan este protocolo, ejemplos de esto son Gtalk, Pandion ,
Entre otro gran grupo del cual pueden encontrar una lista más completa en jabber.org.
Bueno entremos en el tema principal de este pos que es dar a conocer la librería agsXMPP la cual nos facilita el uso de este protocolo.
Configurado la conexión al servidor Jabber.

XmppClientConnection conection = new XmppClientConnection();
conection.Port = 5222;
conection.UseSSL = false; // or true
conection.Server = "jabber.org";
conection.Username = "my_user";
conection.Password = "my_password";
conection.Status = "hello";

Ahora implementaremos el evento para saber cuándo se establezca la conexión.

conection.OnLogin += new ObjectHandler(conection_OnLogin);

Definimos el método conection_OnLogin, en el cual mostrareos un mesnjae por consola: On line.

static void conection_OnLogin(object sender)
{
Console.WriteLine("On line.");
}

Ahora implementamos el evento para mostrar los mensajes que recivimos.

conection.OnMessage += new agsXMPP.protocol.client.MessageHandler(conection_OnMessage);

static void conection_OnMessage(object sender, agsXMPP.protocol.client.Message msg)
{
if (msg.Type == MessageType.chat)
{
Console.WriteLine(msg.From.User + ": " + msg.Body);
}
}

Y por ultimo abrimos la conexión.

conection.Open();

Para enviar un mensjae al contacto que queramos solo hacemos lo siguiente.

Message newMsg = new Message(new Jid ("user@jabber.org"), "hello user");
conection.Send(newMsg);

Aqui les va el ejemplo completo.

using System;
using agsXMPP;
using agsXMPP.protocol.client;

namespace JabberTest
{
class Program
{
static XmppClientConnection conection;
static void Main(string[] args)
{
conection = new XmppClientConnection();
conection.Port = 5222;
conection.UseSSL = false; // or true
conection.Server = "jabber.org";
conection.Username = "my_user";
conection.Password = "my_password";
conection.Status = "hello";

conection.OnLogin += new ObjectHandler(conection_OnLogin);
conection.OnMessage += new agsXMPP.protocol.client.MessageHandler(conection_OnMessage);

conection.Open();
}

static void conection_OnMessage(object sender, agsXMPP.protocol.client.Message msg)
{
if (msg.Type == MessageType.chat)
{
Console.WriteLine(msg.From.User + ": " + msg.Body);

Message newMsg = new Message(msg.From, "hello user");
conection.Send(newMsg);
}
}

static void conection_OnLogin(object sender)
{
Console.WriteLine("On line.");
}
}
}