1

iOS でチャット アプリケーションを開発しており、API は Windows サーバー上にあります。サーバーに ejabbered がインストールされており、agsXMPP を使用して C# から正常に接続できます。

問題は、毎回ユーザーを登録できないことです。正常に実行される場合と実行されない場合があります。以下はコードです:

 static ManualResetEvent done = new ManualResetEvent(false);
    public void Login()
    {
        XmppClientConnection xmpp = (XmppClientConnection)Application["xmpp"];
        try
        {
            if (xmpp == null)
            {
                xmpp = new XmppClientConnection();
                Application["xmpp"] = xmpp;
            }

            xmpp.OnLogin += new ObjectHandler(xmpp_OnLogin);
            xmpp.OnError += new ErrorHandler(xmpp_OnError);
            xmpp.AutoPresence = true;

            xmpp.AutoResolveConnectServer = false;
            xmpp.Port = 5222;
            xmpp.UseSSL = false;
            xmpp.ConnectServer = "127.0.0.1";
            xmpp.Server = "plutus-pc1";
            xmpp.Username = "admin";
            xmpp.Password = "p@ssword";
            xmpp.KeepAlive = true;

            xmpp.Open();

            done.WaitOne();
            Register();


        }
        catch (Exception ex)
        {
            xmpp.Close();
        }


    }

    void xmpp_OnError(object sender, Exception ex)
    {
        XmppClientConnection xmpp = (XmppClientConnection)Application["xmpp"];
        xmpp.Close();
    }

    void xmpp_OnLogin(object sender)
    {
        done.Set();
    }

    protected void cmdLogout_Click(object sender, EventArgs e)
    {
        XmppClientConnection xmpp = (XmppClientConnection)Application["xmpp"];
        xmpp.Close();
    }

    public void Register()
    {
        try
        {
            XmppClientConnection xmpp;
            xmpp = (XmppClientConnection)Application["xmpp"];
            if (xmpp == null)
            {
                xmpp = new XmppClientConnection();
                Application["xmpp"] = xmpp;
            }


            xmpp.AutoPresence = true;

            xmpp.AutoResolveConnectServer = false;
            xmpp.Port = 5222;
             xmpp.UseSSL = false;
            xmpp.ConnectServer = "127.0.0.1";
            xmpp.Server = "plutus-pc1";
            xmpp.Username = "user1";
            xmpp.Password = "p@ssword1";
             xmpp.RegisterAccount = true;

            xmpp.OnRegisterError += xmpp_OnRegisterError;
            xmpp.OnRegistered += xmpp_OnRegistered;
            xmpp.Open();


            //done.WaitOne();
        }
        catch (Exception ex)
        {
        }


    }

    void xmpp_OnRegistered(object sender)
    {

    }


    void xmpp_OnRegisterError(object sender, agsXMPP.Xml.Dom.Element e)
    {
        //throw new NotImplementedException();

    }

登録が失敗すると、さまざまなエラーが発生します。

  • agsXMPP.Xml.Xpnet.InvalidTokenException
  • タイプ「agsXMPP.protocol.stream.feature.Register」のオブジェクトをタイプ「agsXMPP.protocol.Stream」にキャストできません
  • トランスポート接続からデータを読み取れません: 破棄されたオブジェクトにアクセスできません。\r\nオブジェクト名: 'System.Net.Sockets.Socket'

コードを変更していないにもかかわらず、異なるエラーが発生する

4

0 に答える 0