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

Google Chat Desktop Application using Jabber.Net

, 20 Mar 2009 Public Domain
Rate this:
Please Sign up or sign in to vote.
A simple Google chat ( gtalk ) application using Jabber.Net
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

Share

About the Author

$enthi£
Software Developer
India India
No Biography provided

Comments and Discussions

 
Questionsend images Pinmemberkazemfallahi137117-Sep-13 3:15 
GeneralMy vote of 5 PinmemberMember 919827214-Jun-13 21:56 
Questionaltering it PinmemberKeith Aiden17-May-13 6:16 
QuestionThe user name and password login unsuccessful Pinmemberlanyan_hhb29-Jan-13 15:20 
QuestionAny updates? Pinmemberkiquenet.com18-Jan-13 1:38 
QuestionJoin Group Chat Pinmembertithsochinda9-Jan-13 23:28 
Dear sir,
 
This is is very good, but I cannot find how to join chat room in your example,
so please let me know how can I join chat room.
 
I'm looking for your reply,
Thanks in advanced
GeneralMy vote of 5 PinmemberAnkita M4-Nov-12 23:10 
QuestionCan We Get Previously Set Status Message [modified] Pinmemberkarthikeyanthangavel1-Nov-12 23:35 
GeneralMy vote of 5 Pinmembergaga blues22-Oct-12 4:13 
GeneralMy vote of 5 Pinmemberarunraju1-Aug-12 23:02 
QuestionDoubt PinmemberSIVA111118-Jul-12 0:10 
QuestionStatus PinmemberInfinity82717-Apr-12 11:21 
AnswerRe: Status Pinmembernaoufal zerai18-Aug-12 19:07 
GeneralRe: Status PinmemberInfinity82719-Aug-12 10:59 
GeneralRe: Status Pinmembernaoufal zerai24-Aug-12 11:28 
GeneralRe: Status PinmemberInfinity82724-Aug-12 14:41 
GeneralRe: Status Pinmembernaoufal zerai30-Aug-12 3:46 
GeneralRe: Status PinmemberInfinity82730-Aug-12 11:33 
QuestionBug on incoming message PinmemberMember 826597110-Feb-12 7:14 
GeneralMy vote of 4 Pinmemberandrewsroys19-Jan-12 22:35 
QuestionShow only online contacts or online contacts on top Pinmemberdivac1218-Jan-12 12:45 
GeneralMy vote of 5 Pinmemberkonduc14-Jun-11 1:41 
GeneralMy vote of 5 PinmemberNetDave30-Mar-11 10:28 
QuestionHow to get offline messges functionality PinmemberArif_Madi29-Mar-11 22:08 
AnswerRe: How to get offline messges functionality PinmemberNetDave30-Mar-11 10:27 
GeneralRe: How to get offline messges functionality PinmemberArif_Madi30-Mar-11 20:21 
QuestionWorks in default : Having Issues connecting to OpenFire PinmemberMember 779629929-Mar-11 7:59 
GeneralWorking like a charm PinmemberTae-Sung22-Feb-11 10:22 
GeneralCode is understanable. Pinmembergarysprice12-Aug-10 22:05 
GeneralMy vote of 1 Pinmembersunilkumarmano7-Jul-10 3:20 
GeneralRe: My vote of 1 PinmemberLloyd Atkinson12-Dec-10 7:24 
GeneralUsing Openfire in localmachine PinmemberChristatos30-Jun-10 0:28 
GeneralCreate new account Pinmembersr_dusad19-Apr-10 2:16 
Generalabout adding contacts option in gtalk application Pinmembernitin sanap8-Mar-10 19:06 
GeneralGoogle Chat Application for Windows Mobile using Jabber.Net Pinmemberjaiswalrahul26-Jan-10 20:40 
GeneralHI i need a local chet app like gmail PinmemberSravani54930-Oct-09 2:35 
QuestionNo Contacts are displayed in the Roster Pinmemberpilla G Patrudu1-Aug-09 1:39 
AnswerRe: No Contacts are displayed in the Roster Pinmember$enthi£5-Aug-09 4:07 
GeneralComponent for VS 2008 PinmemberAnand KG23-Jul-09 19:15 
Generalplease help Pinmemberdeeps108-Jul-09 0:33 
AnswerRe: please help Pinmember$enthi£5-Aug-09 4:06 
QuestionChat Group? Pinmemberi-developer of Istanbul12-Jun-09 1:20 
AnswerRe: Chat Group? Pinmember$enthi£5-Aug-09 4:04 
GeneralPlease Help PinmemberMember 28960421-Jun-09 21:11 
GeneralRe: Please Help Pinmemberi-developer of Istanbul8-Jun-09 19:56 
GeneralRe: Please Help Pinmemberi-developer of Istanbul10-Jun-09 0:38 
GeneralRe: Please Help PinmemberMember 289604211-Jun-09 3:51 
GeneralRe: Please Help Pinmemberi-developer of Istanbul12-Jun-09 1:02 
GeneralRe: Please Help Pinmemberleo_ullas2-Dec-09 0:41 
GeneralGood Job... PinmemberGuramrit Singh26-May-09 21:44 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

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