XMPP 与服务器的连接并在 iOS 中配置客户端

Posted

技术标签:

【中文标题】XMPP 与服务器的连接并在 iOS 中配置客户端【英文标题】:XMPP Connection with server and configure Client side in iOS 【发布时间】:2016-05-02 12:48:05 【问题描述】:

我正在使用服务器连接到 XMPP 流,但即使用户名、密码错误,连接也始终成功。无法理解为什么会发生这种情况。 我想在我的应用程序中配置客户端,并希望将我的应用程序与 XMPP 服务器连接起来。帮助将不胜感激。以下是我的代码:

    import UIKit
    import XMPPFramework
    protocol ChatDelegate 
        func buddyWentOnline(name: String)
        func buddyWentOffline(name: String)
        func didDisconnect()
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate, XMPPStreamDelegate, XMPPRosterDelegate
        var window: UIWindow?
        var delegate:ChatDelegate! = nil
        var xmppStream = XMPPStream()
        let xmppRosterStorage = XMPPRosterCoreDataStorage()
        var xmppRoster: XMPPRoster
        override init() 
            xmppRoster = XMPPRoster(rosterStorage: xmppRosterStorage)
        
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions:
            [NSObject: AnyObject]?) -> Bool 
                //setupStream()
                self.xmppStream = XMPPStream()
                self.xmppStream.addDelegate(self, delegateQueue: dispatch_get_main_queue())
                self.xmppStream.hostName = "****softs-mbp-9"
                self.xmppStream.hostPort = 5222
                self.connect()
                return true
        
func connect() -> Bool 
            if !xmppStream.isConnected() 
                let jabberID = "admin@****softs-mbp-9"
                let myPassword = "**********"

                if !xmppStream.isDisconnected() 
                    return true
                
    //            if jabberID == nil && myPassword == nil 
    //                return false
    //            

                xmppStream.myJID = XMPPJID.jidWithString(jabberID)

                do 
                    try xmppStream.connectWithTimeout(XMPPStreamTimeoutNone)
                    print("Connection success")
                    return true
                 catch 
                    print("Something went wrong!")
                    return false
                
             else 
                return true
            
        

        func disconnect() 
            goOffline()
            xmppStream.disconnect()
        
    

【问题讨论】:

【参考方案1】:

您是否将用户名设置为 admin@****softs-mbp-9?

【讨论】:

应该是评论:) 让 jabberID = "admin@****softs-mbp-9" 它是一个用户名 但是问题已解决。主机名和端口连接成功。但用户验证是通过用户认证回调。

以上是关于XMPP 与服务器的连接并在 iOS 中配置客户端的主要内容,如果未能解决你的问题,请参考以下文章

xmpp服务器的客户端可以断开其他客户端与服务器的连接吗?

iOS XMPP 客户端在一段时间后断开连接

无法将 Android 客户端与本地 XMPP 服务器连接

与 Google App Engine 连接的即时 XMPP 客户端

无法使用 iOS 的 XMPP 框架连接亚马逊上的 ejabberd 服务器

使用 Smack 的 QuickBlox 服务器端 XMPP 客户端