XMPP-соединение выдаст ошибку времени ожидания соединения - PullRequest
1 голос
/ 15 января 2020

Я использую swift 4 и ios 10. Я использую XMPPFramework и не могу подключиться к серверу. У меня есть эта ошибка:

stream:error xmlns:stream="http://etherx.jabber.org/streams"
connection-timeout xmlns="urn:ietf:params:xml:ns:xmpp-streams"
text xmlns="urn:ietf:params:xml:ns:xmpp-streams" lang="en" Idle connection

Я ищу эту ситуацию, и я не нашел ничего в Интернете. Я не нашел никакой документации для фреймворка XMPP. если у вас есть документ, пожалуйста, пришлите его мне. У меня просто ошибка тайм-аута, и я не знаю, что это. это мой код:

    class ViewController: UIViewController, XMPPStreamDelegate {
    var stream:XMPPStream!
    var xmppRoster: XMPPRoster!

    override func viewDidLoad() {
        super.viewDidLoad()
        let xmppRosterStorage = XMPPRosterCoreDataStorage()
        xmppRoster = XMPPRoster(rosterStorage: xmppRosterStorage)

        stream = XMPPStream()
        stream.addDelegate(self, delegateQueue: .main)
        xmppRoster.activate(stream)


        stream.hostPort = 5222
        stream.myJID = XMPPJID(string: "emad@chat.myaddress.net")

        do {
            print("start connect")
            try stream.connect(withTimeout: 30)
            print("request sent")
        }
        catch {
            print("catch")

        }
    }

    func xmppStreamWillConnect(sender: XMPPStream!) {
        print("will connect")
    }

    func xmppStreamConnectDidTimeout(_ sender: XMPPStream!) {
        print("timeout:")
    }

    func xmppStreamDidConnect(sender: XMPPStream!) {
        print("connected")

        do {
            try sender.authenticate(withPassword: "1235")
        }
        catch {
            print("catch")

        }

    }


    func xmppStreamDidAuthenticate(_ sender: XMPPStream!) {
        print("auth done")
        sender.send(XMPPPresence())
    }


    func xmppStream(_ sender: XMPPStream!, didNotAuthenticate error: DDXMLElement!) {
        print("dint not auth")
        print(error)
    }

    func xmppStream(sender: XMPPStream!, didReceivePresence presence: XMPPPresence!) {
        print(presence)
        let presenceType = presence.type()
        let username = sender.myJID.user
        let presenceFromUser = presence.from().user

        if presenceFromUser != username  {
            if presenceType == "available" {
                print("available")
            }
            else if presenceType == "subscribe" {
                self.xmppRoster.subscribePresence(toUser: presence.from())
            }
            else {
                print("presence type"); print(presenceType)
            }
        }

    }

    func xmppStream(_ sender: XMPPStream!, didReceiveError error: DDXMLElement!) {
        print("\(error)")
    }
    }

У меня проблема с первым шагом. подключение к серверу помогите пожалуйста. Я очень устал

1 Ответ

1 голос
/ 20 января 2020

Наконец-то я исправил проблему. Я добавляю dd DDLog.add (DDTTYLogger.sharedInstance) в мои коды и получаю больше информации. Я использовал веб-функции для подключения, и это проблема. fun c xmppStreamDidConnect (отправитель: XMPPStream!) {...} это было в документе. поэтому я снова пишу эту функцию. но он был изменен в swift 4. поэтому новый код был таким: fun c xmppStreamDidConnect (_ sender: XMPPStream) {...} поэтому вторая функция (функция ew) не имеет "!" символ после XMPPStream. Так что Свифт думал о второй функции как о новой. не переопределить для функции подключения. поэтому, когда я был подключен к серверу, сервер ждал меня, и моя функция ничего не сделала, и у меня была ошибка с сообщением о простое соединение

...