我正在尝试制作自己的XMPP客户端,我使用矩阵SDK作为XMPP库。我已经建立了自己的eJabberd服务器,并将其与MYSQL集成。我能成功地与客户沟通。我也可以使用Matrix SDK成功连接控制台应用程序。但是,当我尝试使用Windows窗体应用程序on_Click事件它发送请求到服务器,但不登录。我可以在日志中看到。
这是我的连接类
namespace WindowsFormsApplication1
{
class Connection
{
public string ConnectionStatus;
XmppClient xmppClient = new XmppClient();
public Connection()
{
ConnectionStatus = "Connecting";
xmppClient.Compression = false;
xmppClient.Hostname = null;
xmppClient.StartTls = true;
xmppClient.Status = "Online";
xmppClient.Password = "123456";
xmppClient.Username = "xeeshan";
xmppClient.Hostname = "rabta.cloudapp.net";
xmppClient.Port.Equals(5222);
xmppClient.OnLogin += new EventHandler<Matrix.EventArgs>(xmpp_OnLogin);
}
private void xmpp_OnLogin(object sender, Matrix.EventArgs e)
{
xmppClient.Status = "I'm chatty";
xmppClient.Show = Matrix.Xmpp.Show.chat;
}
public void Open()
{
xmppClient.OnLogin += new EventHandler<Matrix.EventArgs>(xmpp_OnLogin);
try
{
xmppClient.Open();
Thread.Sleep(8000);
}
catch
{
ConnectionStatus = "Not Connected";
}
}
}
}
我的窗口窗体应用程序点击事件
private void button1_Click(object sender, System.EventArgs e)
{
Connection conn = new Connection();
conn.Open();
}
这是我的ejabberd服务器日志。每次插入一行时,当我点击按钮
=INFO REPORT==== 2014-07-21 20:32:18 ===
I(<0.430.0>:ejabberd_listener:281) : (#Port<0.3742>) Accepted connection {{182,187,194,83},11511} -> {{100,77,176,105},5222}
=INFO REPORT==== 2014-07-21 20:33:37 ===
I(<0.430.0>:ejabberd_listener:281) : (#Port<0.3744>) Accepted connection {{182,187,194,83},11523} -> {{100,77,176,105},5222}
=INFO REPORT==== 2014-07-21 20:35:11 ===
I(<0.430.0>:ejabberd_listener:281) : (#Port<0.3746>) Accepted connection {{182,187,194,83},11538} -> {{100,77,176,105},5222}
=INFO REPORT==== 2014-07-21 21:16:55 ===
I(<0.430.0>:ejabberd_listener:281) : (#Port<0.3748>) Accepted connection {{182,187,194,83},12779} -> {{100,77,176,105},5222}
请帮帮我,我已经被困在这里三天左右了
您的Connection
实例在离开button1_Click
块后自动处置。移动conn
声明到类变量,它应该工作
如有Xml日志请附上。这里你可以看到如何使用MatriX获取XMl日志:http://www.ag-software.net/matrix-xmpp-sdk/matrix-developer-tutorial/日志