Я использую Visual Studio 2010, а ОС - Windows 7, 64-разрядная. Проект, над которым я работаю, нуждается в функциональности XMPP; Для этого я использую библиотеку agsXMPP. Тип проекта - это клиент WPF, который выдает окно, которое остается там, пока выполняется мой код xmpp.Не удалось подключить клиента agsXmpp к серверу eJabberd
Я запускаю сервер eJabberd 2.1.3 в той же системе Windows, на которой я занимаюсь разработкой. Я также создал несколько учетных записей на сервере eJabberd (например, «aaa @ mydomain», «bbb @ mydomain» и т. Д.) И «дружил» друг с другом.
Для тестирования подключения к моему клиенту я использую клиент Pandion Jabber на Windows и клиент Xabber на моем Android в той же сети. Настройка работает нормально, и клиенты Xabber и Pandion могут обмениваться сообщениями друг с другом. Чтобы убедиться в отсутствии помех, я временно отключил брандмауэр.
Проблема: я не могу подключить свою программу к серверу eJabberd. При открытии окна присутствие других клиентов просто не отображается. Я использую следующий код:
string uname = "aaa", domain_server = "mydomain", resource = "res1", password = "password";
Jid jid = new Jid (uname, domain_server, resource);
XmppClientConnection _xmppConn = new XmppClientConnection (jid.Server);
// This is my development machine's IP address
_xmppConn.ConnectServer = "192.168.0.101";
_xmppConn.Server = domain_server;
_xmppConn.Open (jid.User, password);
// The event handlers:
_xmppConn.OnLogin += new ObjectHandler (_xmppConn_OnLogin);
_xmppConn.OnMessage += new agsXMPP.protocol.client.MessageHandler (_xmppConn_OnMessage);
void _xmppConn_OnMessage (object sender, agsXMPP.protocol.client.Message msg) {
MessageBox.Show (msg.Body);
}
void _xmppConn_OnLogin (object sender) {
MessageBox.Show ("Logged in");
}
тот же код работает отлично на Facebook чате, когда сообщение счета с другим FB счета.
string uname = "<my fb name>", domain_server = "facebook.com", resource = "res1", password = "<my password>";
Jid jid = new Jid (uname, domain_server, resource);
XmppClientConnection _xmppConn = new XmppClientConnection (jid.Server);
_xmppConn.Server = "chat.facebook.com";
_xmppConn.Open (jid.User, password);
// The event handlers:
_xmppConn.OnLogin += new ObjectHandler (_xmppConn_OnLogin);
_xmppConn.OnMessage += new agsXMPP.protocol.client.MessageHandler (_xmppConn_OnMessage);
void _xmppConn_OnMessage (object sender, agsXMPP.protocol.client.Message msg) {
MessageBox.Show (msg.Body);
}
void _xmppConn_OnLogin (object sender) {
MessageBox.Show ("Logged in");
}
Я ломаю себе голову, но просто не могу понять, где я могу ошибаться. Может ли кто-нибудь помочь? Заранее спасибо. :)
Я не знаю много о agsxmpp, но, возможно, вам нужно отправить присутствие вручную после входа в систему? – legoscia
@legoscia, я попытался добавить эту строку: _xmppConn.AutoPresence = true; в коде. Иди туда тоже. – Najeeb
Работает ли 'telnet 192.168.0.101 5222'? – vitalyster