gpt4 book ai didi

swift - 无法在 swift 3 中连接到 xmpp 中的套接字

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:27 25 4
gpt4 key购买 nike

我正在尝试连接 xmpp 流套接字但无法连接。我正在使用 swift 3。它在 Objcetiv-C 和 swift 2.0 中工作,但在 swift 3 中不工作。请查看我的以下代码并帮助我。谢谢。

func setupStream()
{
xmppStreamChat = XMPPStream.init()

xmppReconnect = XMPPReconnect()
//xmppRosterStorage = XMPPRosterCoreDataStorage.init()
xmppRoster = XMPPRoster.init(rosterStorage: xmppRosterStorage)
xmppRoster.autoFetchRoster = true;

xmppStreamChat.addDelegate(self, delegateQueue: DispatchQueue.main)
xmppRoster.addDelegate(self, delegateQueue: DispatchQueue.main)

xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = true;

xmppvCardStorage = XMPPvCardCoreDataStorage.sharedInstance();
xmppvCardTempModule = XMPPvCardTempModule.init(vCardStorage: xmppvCardStorage)

xmppvCardAvatarModule = XMPPvCardAvatarModule.init(vCardTempModule: xmppvCardTempModule)
xmppCapabilitiesStorage = XMPPCapabilitiesCoreDataStorage.sharedInstance();
xmppCapabilities = XMPPCapabilities.init(capabilitiesStorage: xmppCapabilitiesStorage);
xmppCapabilities.autoFetchHashedCapabilities = true;
xmppCapabilities.autoFetchNonHashedCapabilities = false;
xmppReconnect.activate(xmppStreamChat)
xmppRoster.activate(xmppStreamChat)

xmppvCardTempModule.activate(xmppStreamChat)
xmppvCardAvatarModule.activate(xmppStreamChat)
xmppCapabilities.activate(xmppStreamChat)


xmppStreamChat.hostName = "95.138.180.254"
xmppStreamChat.hostPort = 5222
}

func connect() -> Bool
{
if !((xmppStreamChat.isConnected()))
{
let jabberID = (UserDefaults.standard.value(forKey: "XMPPUserName") as! String) + "@95.138.180.254"
let myPassword = UserDefaults.standard.string(forKey: "XMPPPassword")

if !((xmppStreamChat.isDisconnected()))
{
return true
}

if jabberID.length == 0 && myPassword?.length == 0
{
return false
}
xmppStreamChat.myJID = XMPPJID.init(string: jabberID)
do {
try xmppStreamChat.connect(withTimeout: XMPPStreamTimeoutNone)
print(xmppStreamChat.isConnecting()) // This prints true
//try xmppStreamChat.connect(to: xmppStreamChat.myJID, withAddress: nil, withTimeout: XMPPStreamTimeoutNone)
print("Connection success")
return true
} catch {
print("Something went wrong!")
return false
}
}
else
{
return true
}
}

xmppStream(_ 发送方:XMPPStream,socketDidConnect 套接字:GCDAsyncSocket)正在调用此方法,但此后没有任何委托(delegate)方法在调用。如果可以的话请帮忙。提前致谢。

最佳答案

按如下方式创建该类的单例:

class XMPPController: NSObject {

static let sharedInstance = XMPPController();

您的设置方法:

    func setupStream()
{
/***set up code goes here***/
}

现在你的连接方法:

func connect() -> Bool{
/***connect code goes here***/
}

现在在另一个 Controller 中调用它如下:

    func testConnect() {
XMPPController.sharedInstance.setupStream();
XMPPController.sharedInstance.connect();
}

关于swift - 无法在 swift 3 中连接到 xmpp 中的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41688379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com