0

我正在尝试使用ObjectiveDDP库将我的 iOS 应用程序连接到我的 Meteor 应用程序。我正在运行我的流星应用程序,localhost:3000当我尝试登录时出现此错误:

Error Domain=boundsj.objectiveddp.transport Code=0 "You are not connected" UserInfo=0x7fe33b440500 {NSLocalizedDescription=You are not connected}

*注意- 我没有对服务器做任何事情来支持这一点,我假设它是开箱即用的。

我不确定我输入的 url 是否正确,因为我找不到在使用 ObjectiveDDP 时应该连接到哪个 url 的文档。

这是我的代码:

var meteorClient: MeteorClient = MeteorClient(DDPVersion: "1")

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    self.meteorClient.addSubscription("someSubscription")

    var ddp = ObjectiveDDP(URLString: "ws://localhost:3000/websocket", delegate: self.meteorClient)
    self.meteorClient.ddp = ddp;
    self.meteorClient.ddp.connectWebSocket()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "reportConnection", name: MeteorClientDidConnectNotification, object: nil)
}

func reportConnection() {

    println("================> connected to server!")

    println(self.meteorClient.connected)
    self.meteorClient.logonWithEmail("blob@schmoe.com", password: "password", responseCallback: {
        (response, error) -> Void in
        if (error != nil) {
            println("*****Error******")
            println(error);
            return;
        }

        println(response);

    })
}

*更新 所以我尝试meteorClient在登录之前检查我是否已连接到服务器。我添加了

NSNotificationCenter.defaultCenter().addObserver(self, selector: "reportConnection", name: MeteorClientDidConnectNotification, object: nil)

当我连接时得到通知。但是,当收到 DidConnectNotification 时,我检查self.meteorClient.connected并得到false

4

3 回答 3

0

将您的 DDPVersion 从 1 更改为 pre2

var meteorClient: MeteorClient = MeteorClient(DDPVersion: "pre2")
于 2015-03-22T19:13:46.007 回答
0

该库的维护者,您能指定您使用的是什么版本的 ObectiveDDP 和流星吗?首先尝试使用来自 master 而不是 cocoapods 的 ObectiveDDP。你的网址是正确的。首先要检查的是,示例应用程序是否连接到您的服务器?

您可以使用按钮尝试登录吗,我认为您遇到了比赛条件。这可能需要一些整理。

于 2015-03-22T20:01:07.870 回答
0

我意识到这已经过时了,但我想我将来可以帮助别人。问题似乎是您使用 MeteorClientDidConnectNotification 来决定何时开始登录过程。您应该等待后续通知 - MeteorClientConnectionReadyNotification。该按钮“修复”了它,因为您巧合地在 MeteorClientDidConnectNotification 之后等待客户端准备好并开始登录过程。

于 2016-07-15T15:18:33.637 回答