Subject: MUC room can't setup?
In my program, I first login to Wildfire server, and then try to set up a MUC room and invite a user to join.
The login succeeded, but there is no reponse for room setup. In fact, the call back function to process received data from server seem not run, and there is no logged info.
Would you kindly like to have look at the program for me?
public class testMUC
{
pulic testMUC()
{
}
public void setupRoom()
{
/// prepare data for callback method
chResponse myResponse = new chResponse();
myResponse.userJid = new agsXMPP.Jid( "username@81939b411fc8453");
myResponse.roomJID = new agsXMPP.Jid(roomName + "@81939b411fc8453/myroom");
mychatResponse.status = "ROOM_SETTINGUP";
/// Setup connection
agsXMPP.XmppClientConnection jabberconn = new agsXMPP.XmppClientConnection("81939b411fc8453");
jabberconn.Open("admin", "******");
/// Setup Room
agsXMPP.protocol.client.Presence MUCpresence = new agsXMPP.protocol.client.Presence();
MUCpresence.From = "admin@81939b411fc8453/manager";
MUCpresence.To = myResponse.roomJID
MUCpresence.MucUser = new agsXMPP.protocol.x.muc.User();
jabberconn.Send(MUCpresence);
/// Prepare Presence callback
agsXMPP.PresenceCB<chResponse> preshandler = new agsXMPP.PresenceCB<chResponse>(HandlePresence);
jabberconn.m_PresenceGrabber.Add<chResponse>(roomJID, preshandler, myResponse);
/// check reuslt
while(myResponse.status ="ROOM_SETTINGUP")
{
Thread.Sleep(new System.TimeSpan(50000));
}
return;
}
private static void HandlePresence(object sender, agsXMPP.protocol.client.Presence pres, chResponse myResponse)
{
dbg("start processing presence ...");
if (pres.From == myResponse.roomJID && pres.HasTag("status", true))
{
if (pres.SelectSingleElement("status", true).GetAttribute("code") == "201")
{
myResponse.status = "ROOM_SETTUP";
/// Room setup, then Invite a user
string reason = "";
agsXMPP.protocol.x.muc.MucManager myMucManager = new agsXMPP.protocol.x.muc.MucManager(jabberconn);
myMucManager.Invite(myResponse.userJid, myResponse.roomJID, reason);
/// prepare callback method
agsXMPP.MessageCB<chResponse> msgHandler = new agsXMPP.MessageCB<chResponse>(HandleMessage);
jabberconn.m_MessageGrabber.Add<chResponse>(myResponse.roomJID, msgHandler, myResponse);
}
else
{
mychatResponse.status = "ROOM_SETUP_FAILED";
}
}
}
private static void HandleMessage(object sender, agsXMPP.protocol.client.Message Msg, chResponse myResponse)
{
dbg("start processing mucMessage ...");
if (Msg.From == myResponse.roomJID && (Msg.HasTag("Decline")))
myResponse.status = "INVITATION_DECLINED";
else
myResponse.status = "INVITATION_ACCEPTED";
}
}
/// Data Structure
public class chatResponse
{
public chatResponse()
{
}
private agsXMPP.Jid m_roomJID;
private agsXMPP.Jid m_userJid;
private string m_status;
public agsXMPP.Jid userJid
{
get { return m_userJid; }
set { m_userJid = value; }
}
public agsXMPP.Jid roomJID
{
get { return m_roomJID; }
set { m_roomJID = value; }
}
public string status
{
get { return m_status; }
set { m_status = value; }
}
I checked the packet sent out to server is as
{<presence xmlns="jabber:client" from="amin@81939b411fc8453/manager" to="v6bwuCvizG@81939b411fc8453/myroom"><x
xmlns="http://jabber.org/protocol/muc#user" /></presence>}
I wonder
1) is there any agsXMPP lib function wrongly used?
2) How could I step into the call back function to see whether it's running, besides just printing some data in the function?
Thanks for your attention.
The version of Wildfire is 3.2.2, and agsXMPP is downloaded here recently.
The login succeeded, but there is no reponse for room setup. In fact, the call back function to process received data from server seem not run, and there is no logged info.
Would you kindly like to have look at the program for me?
public class testMUC
{
pulic testMUC()
{
}
public void setupRoom()
{
/// prepare data for callback method
chResponse myResponse = new chResponse();
myResponse.userJid = new agsXMPP.Jid( "username@81939b411fc8453");
myResponse.roomJID = new agsXMPP.Jid(roomName + "@81939b411fc8453/myroom");
mychatResponse.status = "ROOM_SETTINGUP";
/// Setup connection
agsXMPP.XmppClientConnection jabberconn = new agsXMPP.XmppClientConnection("81939b411fc8453");
jabberconn.Open("admin", "******");
/// Setup Room
agsXMPP.protocol.client.Presence MUCpresence = new agsXMPP.protocol.client.Presence();
MUCpresence.From = "admin@81939b411fc8453/manager";
MUCpresence.To = myResponse.roomJID
MUCpresence.MucUser = new agsXMPP.protocol.x.muc.User();
jabberconn.Send(MUCpresence);
/// Prepare Presence callback
agsXMPP.PresenceCB<chResponse> preshandler = new agsXMPP.PresenceCB<chResponse>(HandlePresence);
jabberconn.m_PresenceGrabber.Add<chResponse>(roomJID, preshandler, myResponse);
/// check reuslt
while(myResponse.status ="ROOM_SETTINGUP")
{
Thread.Sleep(new System.TimeSpan(50000));
}
return;
}
private static void HandlePresence(object sender, agsXMPP.protocol.client.Presence pres, chResponse myResponse)
{
dbg("start processing presence ...");
if (pres.From == myResponse.roomJID && pres.HasTag("status", true))
{
if (pres.SelectSingleElement("status", true).GetAttribute("code") == "201")
{
myResponse.status = "ROOM_SETTUP";
/// Room setup, then Invite a user
string reason = "";
agsXMPP.protocol.x.muc.MucManager myMucManager = new agsXMPP.protocol.x.muc.MucManager(jabberconn);
myMucManager.Invite(myResponse.userJid, myResponse.roomJID, reason);
/// prepare callback method
agsXMPP.MessageCB<chResponse> msgHandler = new agsXMPP.MessageCB<chResponse>(HandleMessage);
jabberconn.m_MessageGrabber.Add<chResponse>(myResponse.roomJID, msgHandler, myResponse);
}
else
{
mychatResponse.status = "ROOM_SETUP_FAILED";
}
}
}
private static void HandleMessage(object sender, agsXMPP.protocol.client.Message Msg, chResponse myResponse)
{
dbg("start processing mucMessage ...");
if (Msg.From == myResponse.roomJID && (Msg.HasTag("Decline")))
myResponse.status = "INVITATION_DECLINED";
else
myResponse.status = "INVITATION_ACCEPTED";
}
}
/// Data Structure
public class chatResponse
{
public chatResponse()
{
}
private agsXMPP.Jid m_roomJID;
private agsXMPP.Jid m_userJid;
private string m_status;
public agsXMPP.Jid userJid
{
get { return m_userJid; }
set { m_userJid = value; }
}
public agsXMPP.Jid roomJID
{
get { return m_roomJID; }
set { m_roomJID = value; }
}
public string status
{
get { return m_status; }
set { m_status = value; }
}
I checked the packet sent out to server is as
{<presence xmlns="jabber:client" from="amin@81939b411fc8453/manager" to="v6bwuCvizG@81939b411fc8453/myroom"><x
xmlns="http://jabber.org/protocol/muc#user" /></presence>}
I wonder
1) is there any agsXMPP lib function wrongly used?
2) How could I step into the call back function to see whether it's running, besides just printing some data in the function?
Thanks for your attention.
The version of Wildfire is 3.2.2, and agsXMPP is downloaded here recently.