xmppStreamDidConnect не вызывается в "быстрой среде" - PullRequest
0 голосов
/ 10 октября 2018

Я создаю фреймворк в swift , используя cocoapods Я добавил XMPP framework , но каким-то образом не может подключиться к моемухост :

мои настройки:

class XMPPController: NSObject ,XMPPStreamDelegate{

 var XMPP_HOST = "**************";
 var userJid:XMPPJID = XMPPJID();
 var password = "";

var xmppStream:XMPPStream;

init(jid: String, password: String) {


if let userjabberid = XMPPJID(string: jid) {
    self.userJid = userjabberid;
}
self.password = password;

self.xmppStream = XMPPStream();
self.xmppStream.hostName = XMPP_HOST;
self.xmppStream.hostPort = 5222;
self.xmppStream.startTLSPolicy = XMPPStreamStartTLSPolicy.allowed;
self.xmppStream.myJID = self.userJid;

super.init();
self.xmppStream.addDelegate(self, delegateQueue: DispatchQueue.main)

} и мой метод подключения:

func connect () {

if !self.xmppStream.isDisconnected {
    return
}

do {
    try self.xmppStream.connect(withTimeout: XMPPStreamTimeoutNone);
} catch let err {
    print(err);
}

}

и мои методы делегата:

func xmppStreamWillConnect(_ sender: XMPPStream) {
    print("will connect");
}
func xmppStream(_ sender: XMPPStream, socketDidConnect socket: GCDAsyncSocket) {
    print("socket")
}
func xmppStreamDidStartNegotiation(_ sender: XMPPStream) {
    print("negotiate")
}
func xmppStream(_ sender: XMPPStream, didReceiveError error: DDXMLElement) {
    print(error);
}
func xmppStreamDidDisconnect(_ sender: XMPPStream, withError error: Error?) {
    print("disconnected");
}
func xmppStreamDidConnect(_ sender: XMPPStream) {
    print("connected");
    try! sender.authenticate(withPassword: self.password);
}
func xmppStreamDidAuthenticate(_ sender: XMPPStream) {
    print("authenticated");
}
func xmppStream(_ sender: XMPPStream, didNotAuthenticate error: DDXMLElement) {
    print("Stream: Fail to Authenticate");
}

здесь, только xmppStreamWillConnect вызывается, а все остальные методы делегата не вызываются.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

решено созданием синглтона моего класса в виде пар:

static let sharedInstance = XMPPController();

и вызовом его как:

XMPPController.sharedInstance.connect(Withjid: "***@dev.****.com", Andpassword: "password");
0 голосов
/ 10 октября 2018

Вам нужно инициализировать XMPPController, как показано ниже, и вызвать функцию подключения:

self.xmppController = XMPPController(jid: String, password: String)
self.xmppController.xmppStream.addDelegate(self, delegateQueue: DispatchQueue.main)
self.xmppController.connect()
...