Click here to Skip to main content
Click here to Skip to main content

Google Chat Desktop Application using Jabber.Net

By , 20 Mar 2009
 
Gtalk_Messenger.jpg

Introduction

This is a simple Google chat ( gtalk ) desktop application developed in C#. With this application, we can easily chat with our Gmail contacts. This application serves as a best approach for developers to start with the chat application for Gmail.

Background

This application is developed using a .NET open source library, Jabber.net. This library contains a set of .NET controls for sending and receiving extensible messaging and presence protocol (XMPP), also known as the Jabber.

Using the Code

After installing the Jabber.Net library, you can see the list of Jabber.Net controls in the Visual Studio toolbox. Now, add the JabberClient control to the form and assign the user name and password.

User = txtUserName.Text;
Pwd = txtPassword.Text;
jabberClient1.User = User;
jabberClient1.Server = "gmail.com";
jabberClient1.Password = Pwd;
jabberClient1.AutoRoster = true;

Now, add a RosterTree control to populate the contact list and assign the instance of the roster manager and the presence manager to the roster tree control.

rm = new RosterManager();
rm.Stream = jabberClient1;
rm.AutoSubscribe = true;
rm.AutoAllow = jabber.client.AutoSubscriptionHanding.AllowAll;
rm.OnRosterBegin += new bedrock.ObjectHandler(rm_OnRosterBegin);
rm.OnRosterEnd += new bedrock.ObjectHandler(rm_OnRosterEnd);
rm.OnRosterItem += new RosterItemHandler(rm_OnRosterItem);

The RosterManager will add the contact list to the roster tree and the PresenceManager will add a notification for the contact whether the contact is in online or offline mode.

pm = new PresenceManager();
pm.Stream = jabberClient1;

rosterTree1.RosterManager = rm;
rosterTree1.PresenceManager = pm;

After assigning all of the above, we have to call the connect() method to login with the given credentials and populate the roster tree with the contact list.

jabberClient1.Connect();
jabberClient1.OnAuthenticate += new bedrock.ObjectHandler(jabberClient1_OnAuthenticate);

On double clicking a contact in the contact list will open a chat window, through which the user can send messages using the following function:

Gtalk_chat.jpg

private void SendMessage()
{
	jabber.protocol.client.Message reply = 
		new jabber.protocol.client.Message(_jabberClient.Document);
    if (rtbSendMessage.Text != "\n" && rtbSendMessage.Text != " ")
    {
        reply.Body = rtbSendMessage.Text;
        if (reply.Body != "")
        {
            reply.To = _mailId;
            _jabberClient.Write(reply);
            string sentMsg = _jabberClient.User + " Says : " + 
					rtbSendMessage.Text + "\n";
            AppendConversation(sentMsg);
            rtbSendMessage.Text = "";
        }
    }            
}

The JabberClient is registered with an onMessage event to receive whenever an incoming message arrives. This is handled by the following function:

public void _jabberClient_OnMessage
	(object sender, jabber.protocol.client.Message msg)
{
   if (!this.ReceiveFlag)
   {
       if (msg.From.Bare == this.MailId)
       {
           if (msg.Body != "")
           {
               string receivedMsg = msg.From.User + " Says : " + msg.Body + "\n";
               AppendConversation(receivedMsg);
               msg.Body = "";
           }
       }
   }
}

History

  • Released in March 2009

License

This article, along with any associated source code and files, is licensed under A Public Domain dedication

About the Author

$enthi£
Software Developer
India India
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Questionaltering itmemberKeith Aiden17 May '13 - 6:16 
QuestionThe user name and password login unsuccessfulmemberlanyan_hhb29 Jan '13 - 15:20 
QuestionAny updates?memberkiquenet.com18 Jan '13 - 1:38 
QuestionJoin Group Chatmembertithsochinda9 Jan '13 - 23:28 
GeneralMy vote of 5memberAnkita M4 Nov '12 - 23:10 
QuestionCan We Get Previously Set Status Message [modified]memberkarthikeyanthangavel1 Nov '12 - 23:35 
GeneralMy vote of 5membergaga blues22 Oct '12 - 4:13 
GeneralMy vote of 5memberarunraju1 Aug '12 - 23:02 
QuestionDoubtmemberSIVA111118 Jul '12 - 0:10 
I have only Avaliable Users in the treeview ..how did u get the online users......pls tell mee sir.
QuestionStatusmemberInfinity82717 Apr '12 - 11:21 
AnswerRe: Statusmembernaoufal zerai18 Aug '12 - 19:07 
GeneralRe: StatusmemberInfinity82719 Aug '12 - 10:59 
GeneralRe: Statusmembernaoufal zerai24 Aug '12 - 11:28 
GeneralRe: StatusmemberInfinity82724 Aug '12 - 14:41 
GeneralRe: Statusmembernaoufal zerai30 Aug '12 - 3:46 
GeneralRe: StatusmemberInfinity82730 Aug '12 - 11:33 
QuestionBug on incoming messagememberMember 826597110 Feb '12 - 7:14 
GeneralMy vote of 4memberandrewsroys19 Jan '12 - 22:35 
QuestionShow only online contacts or online contacts on topmemberdivac1218 Jan '12 - 12:45 
GeneralMy vote of 5memberkonduc14 Jun '11 - 1:41 
GeneralMy vote of 5memberNetDave30 Mar '11 - 10:28 
QuestionHow to get offline messges functionalitymemberArif_Madi29 Mar '11 - 22:08 
AnswerRe: How to get offline messges functionalitymemberNetDave30 Mar '11 - 10:27 
GeneralRe: How to get offline messges functionalitymemberArif_Madi30 Mar '11 - 20:21 
QuestionWorks in default : Having Issues connecting to OpenFirememberMember 779629929 Mar '11 - 7:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130516.1 | Last Updated 21 Mar 2009
Article Copyright 2009 by $enthi£
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid