XMPP connect 会报错 connection-timeout
XMPP connect will error connection-timeout
我使用 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)")
}
}
第一步有问题。连接到服务器
请帮忙。我真的很累
终于,我解决了我的问题。我将 dd DDLog.add(DDTTYLogger.sharedInstance) 添加到我的代码中,我得到了更多信息。
我使用网络功能进行连接,这有问题。
func xmppStreamDidConnect(发件人:XMPPStream!) { ... }
它在文档中。所以我又写了这个函数。但它在 swift 4 中发生了变化。所以新代码是这样的:
func xmppStreamDidConnect(_ sender: XMPPStream) { ... }
所以,第二个函数(ew函数)没有“!” XMPPStream 之后的符号。
所以Swift把第二个函数想成了一个新函数。不覆盖 did connect 功能。
所以当我连接到服务器时,服务器正在等待我,我的功能没有任何作用,我有一个空闲连接消息错误
我使用 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)")
}
}
第一步有问题。连接到服务器 请帮忙。我真的很累
终于,我解决了我的问题。我将 dd DDLog.add(DDTTYLogger.sharedInstance) 添加到我的代码中,我得到了更多信息。 我使用网络功能进行连接,这有问题。 func xmppStreamDidConnect(发件人:XMPPStream!) { ... } 它在文档中。所以我又写了这个函数。但它在 swift 4 中发生了变化。所以新代码是这样的: func xmppStreamDidConnect(_ sender: XMPPStream) { ... } 所以,第二个函数(ew函数)没有“!” XMPPStream 之后的符号。 所以Swift把第二个函数想成了一个新函数。不覆盖 did connect 功能。 所以当我连接到服务器时,服务器正在等待我,我的功能没有任何作用,我有一个空闲连接消息错误