使用 Jabber.Net 的 Google Chat 桌面应用程序
一个简单的 Google Chat (gtalk) 应用程序,使用 Jabber.Net。

引言
这是一个用 C# 开发的简单的 Google Chat (gtalk) 桌面应用程序。使用此应用程序,我们可以轻松地与 Gmail 联系人聊天。此应用程序是开发者开始使用 Gmail 聊天应用程序的最佳方法。
背景
此应用程序使用 .NET 开源库 Jabber.net 开发。该库包含一组用于发送和接收可扩展消息和状态协议 (XMPP) 的 .NET 控件,也称为 Jabber。
Using the Code
安装 Jabber.Net 库后,您可以在 Visual Studio 工具箱中看到 Jabber.Net 控件列表。现在,将 JabberClient
控件添加到窗体,并分配用户名和密码。
User = txtUserName.Text;
Pwd = txtPassword.Text;
jabberClient1.User = User;
jabberClient1.Server = "gmail.com";
jabberClient1.Password = Pwd;
jabberClient1.AutoRoster = true;
现在,添加一个 RosterTree
控件来填充联系人列表,并将 roster 管理器和状态管理器的实例分配给 roster 树控件。
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);
RosterManager
会将联系人列表添加到 roster 树,而 PresenceManager
会为联系人添加通知,以指示联系人是处于在线还是离线状态。
pm = new PresenceManager();
pm.Stream = jabberClient1;
rosterTree1.RosterManager = rm;
rosterTree1.PresenceManager = pm;
分配完以上所有内容后,我们需要调用 connect()
方法来使用给定的凭据登录,并使用联系人列表填充 roster 树。
jabberClient1.Connect();
jabberClient1.OnAuthenticate += new bedrock.ObjectHandler(jabberClient1_OnAuthenticate);
双击联系人列表中的联系人将打开一个聊天窗口,用户可以通过以下函数发送消息
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 = "";
}
}
}
JabberClient
已注册一个 onMessage
事件,以在收到传入消息时接收。这由以下函数处理
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 = "";
}
}
}
}
历史
- 发布于 2009 年 3 月