Ich habe einen Parse-Server mit LiveQuery auf Amazon EC2-Instanz, auf Port 9091, ohne Proxy konfiguriert, Firewall-Konfigurationen vorgenommen. Es scheint gut zu funktionieren, weil wir auf React getestet haben und http://www.websocket.org/echo.html verwendet haben, um zu sagen, dass die Verbindung erfolgreich war.Parse LiveQuery Abonnement erhält keine Ereignisse
Aber auf iOS konnte ich LiveQuery nicht arbeiten, obwohl das handleSubscribe in Ordnung zu sein scheint.
Ich habe einen einfachen Viewcontroller erstellt, es zu versuchen:
import UIKit
import Parse
import ParseLiveQuery
class StatsViewController: UIViewController {
@IBAction func insertMessage(sender: AnyObject) {
let message = Message();
message.author = PFUser.currentUser()
message.authorName = message.author?.username
message.text = "Hello: \(NSDate())"
message.roomName = "Test";
message.saveInBackground();
}
var myQuery: PFQuery {
return (Message.query()?
.whereKey("roomName", equalTo: "2")
.orderByAscending("createdAt"))!
}
var subscription: Subscription<Message>? = nil
override func viewDidLoad() {
super.viewDidLoad()
//Registers the subclass
Message.registerSubclass();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
//1) queries for messages, working.
myQuery.findObjectsInBackground().continueWithBlock() { res in
for msg in ((res.result as? [Message]))! {
print(msg);
}
return nil
}
//2) try to subscribe and receive any information from the server
subscription = myQuery.subscribe()
subscription!.handleEvent { query, event in
// Handle event
print("any event, please?"); //no events handled after creating a new message
}
subscription!.handle(Event.Created) { query, object in
// Called whenever an object was created
print("any creation, please?"); //no events handled after creating a new message
}
subscription!.handleError { (query, err) in
print("any error, please?"); //no errors handled
}
subscription!.handleSubscribe { query in
print("subscribed")
}
}
}
Ich habe auch versuchte das Abonnement des Code in dem Parse-Beispiel verwenden, wie in
func subscribeToUpdates() {
subscription = liveQueryClient
.subscribe(messagesQuery)
.handle(Event.Created) { _, message in
self.printMessage(message)
}
}
Gibt es einen Fehler oder etwas fehlt im Abonnementsprozess?
Danke!
[Livequery Beispiel] (https://github.com/FredvanRijswijk/ParseLiveQuery) –
Haben Sie jemals dieses Problem lösen? Ich habe das gleiche Problem. Vielen Dank! – Ward
Es funktionierte, wenn ich registerSubclass() verwendete. Hast Du es versucht? –