Как я могу использовать 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

Другие вопросы по тегам