我正在试用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 。
答案 0 :(得分:0)
将您的DDPVersion从1更改为pre2
var meteorClient: MeteorClient = MeteorClient(DDPVersion: "pre2")
答案 1 :(得分:0)
所述库的维护者,您能指定您使用的ObectiveDDP和流星版本吗?首先尝试使用来自master而非cocoapods的ObectiveDDP。你的网址是对的。首先要检查的是,示例应用程序是否连接到您的服务器?
您是否可以使用按钮尝试登录,我认为您的竞争条件是正常的。这可能会使用一些整洁。
答案 2 :(得分:0)
我意识到这已经过时了,但我想我将来可以帮助别人。问题似乎是您使用MeteorClientDidConnectNotification来决定何时启动登录过程。您应该等待后续通知 - MeteorClientConnectionReadyNotification。按钮"固定"因为您在MeteorClientDidConnectNotification之后巧合等待客户端准备就绪并且您开始登录过程。