Monday 5 May 2014

Using XMPP and Openfire server in ASP.NET C# - Part -1

Extensible Messaging and Presence Protocol (XMPP)

The Extensible Messaging and Presence Protocol (XMPP) is a protocol for streaming XML elements in order to exchange messages and presence information.
The XMPP Core uses main features like
  • XML Streams
  • TLS
  • SASL
  • <message/>, <presence/>, and <iq/> children of the stream root

The basic functionality expected of XMPP is instant messaging (IM) and presence application.

Important requirement are
  •  Exchange messages with other users
  •  Exchange presence information with other users
  •  Manage subscriptions to and from other users
  •  Manage items in a contact list (in XMPP this is called a "roster")
  •  Block communications to or from specific other users

There are many providers who had built in libraries as mentioned in XMPP Standard foundation check link http://xmpp.org/xmpp-software/libraries/ .
The example below described is based on the agsXMPP SDK developed in managed C# dedicated to .NET and Mono technologies. Since, it is dual licensed (GPL) free DLL developed by ag-software.net and they also provide support for issues.
Before moving onto example there is important requirement to implement chat i.e., Chat server installation. I am using Openfire server to fulfill the requirement. For installation follow the link http://www.igniterealtime.org/projects/openfire/documentation.jsp

     Important particulars for this implementation is
  •  JID – Jabber Id, a unique id in the openfire server for each user.
  • Roster- User’s contact is roster.

      How to login to the server?

        Add the following code after successful login from your application.
       
        AgsXMPP.XmppClientConnection objXmpp = new agsXMPP.XmppClientConnection();
        Jid jid = new Jid ("xyz@server name"); //ex: xyz@gmail.com – gmail.com is server for  google.mail
       objXmpp.Server = jid.Server;
       objXmpp.Username = jid.User;
objXmpp.Password = ******; //your password of account.
objXmpp.AutoResolveConnectServer = true;
Try
{
 objXmpp.OnLogin += loggedIn; // loggedIn is handler for successful login to server.
 objXmpp.OnAuthError += loginFailed;
 objXmpp.Open ();
}
Catch (exception ex)
{

}

The loggedin handler is shown below

Private void loggedIn (object o)
{

//lblStatus.Text = "Logged in and Active.";

}

The login failed handler is shown below

Private void loginFailed (object o, agsXMPP.Xml.Dom.Element el)
{

//lblStatus.Text = "Invalid credentials.”

}

When the loggedin handler executes it assures you that user credentials are valid and logged in.

Part 1 we discussed only on the Login part using AgsXmpp.dll.

In next part i.e., Part 2 we shall discuss upon Recieving roster list of the user using AgsXmpp.









No comments:

Post a Comment