无法使用ObjectiveDDP登录iOS上的Meteor

时间:2015-03-22 15:56:37

标签: ios meteor ddp

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

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

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

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

这是我的代码:

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

3 个答案:

答案 0 :(得分:0)

将您的DDPVersion从1更改为pre2

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

答案 1 :(得分:0)

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

您是否可以使用按钮尝试登录,我认为您的竞争条件是正常的。这可能会使用一些整洁。

答案 2 :(得分:0)

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