Как я могу использовать agsxmpp для настройки gtalk в C#?
У меня есть код для обмена сообщениями XMPP в C#. Я не могу отправить сообщение другому пользователю.
using agsXMPP;
using agsXMPP.protocol.client;
using agsXMPP.Collections;
using agsXMPP.protocol.iq.roster;
using System.Threading;
using Microsoft.Win32;
public partial class Talk : Form
{
agsXMPP.XmppClientConnection objXmpp;
public Talk()
{
InitializeComponent();
}
private void btnSend_Click(object sender, EventArgs e)
{
XmppClientConnection xmpp = new XmppClientConnection();
xmpp.Server = "gmail.com";
xmpp.ConnectServer = "talk.google.com";
xmpp.Port = 5222;
xmpp.Username = "Sender@gmail.com";
xmpp.Password = "******";
xmpp.Open();
agsXMPP.Jid JID = new Jid("receiver@gmail.com");
xmpp.MesagageGrabber.Add(JID, new agsXMPP.Collections.BareJidComparer(), new MessageCB(MessageCallBack), null);
agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message();
msg.Type = agsXMPP.protocol.client.MessageType.chat;
msg.To = JID;
msg.Body = " asdfasdfasdf " ;// simple string
xmpp.OnLogin += delegate(object o) { xmpp.Send(msg); };
xmpp.Close();
}
static void MessageCallBack(object sender,agsXMPP.protocol.client.Message msg,object data)
{
if (msg.Body != null)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("{0}>> {1}", msg.From.User, msg.Body);
Console.ForegroundColor = ConsoleColor.Green;
}
}
}
Что я делаю неправильно?
1 ответ
1) имя пользователя - отправитель (в нижнем регистре), а не Sender@gmail.com. sender@gmail.com - полный джид
2) agsXMPP является полностью асинхронным. Это означает, что ваш вызов xmpp.Open() не блокируется. Ваш прогон проходит и закрывает соединение непосредственно перед тем, как оно было установлено.
3) посмотрите на примеры agsXMPP