Parse Live Query: не получает события на клиенте iOS.Наш сервер Parse размещен в службах приложений Azure - PullRequest
0 голосов
/ 01 января 2019

Описание проблемы

Мы разместили сервер Parse в службах приложений Azure.Мы можем подключиться к живому запросу и подписаться на него.Мы получаем сообщения ниже.

2019-01-01 19: 03: 26.917094 + 0530 LiveQueryTest [59625: 972922] ParseLiveQuery: Отправка сообщения:

{"clientKey":"xxxxxx","op":"connect","sessionToken":"","applicationId":"xxxxxx"}
2019-01-01 19:03:27.285251+0530 LiveQueryTest[59625:972922] ParseLiveQuery: Received message: {"op":"connected","clientId":5}
2019-01-01 19:03:27.388337+0530 LiveQueryTest[59625:972922] ParseLiveQuery: Sending message: {"query":{"className":"PostQuestionMessage","where":{"type":2}},"requestId":1,"op":"subscribe"}
2019-01-01 19:03:27.600455+0530 LiveQueryTest[59625:972813] ParseLiveQuery: Received message: {"op":"subscribed","clientId":5,"requestId":1}

И мы подписаны на обновлениеСобытие, но когда мы обновили какие-либо записи, мы не получаем событие Назад.

На сервере:

Мы пытались прослушивать определенный порт «1337», как показано ниже: Каждый раз, когда мы делаем это, наш анализПанель инструментов и API перестает работать.Поэтому необходимо ли прослушивать определенный порт, например "1337" или var port = process.env.PORT ||1337;также будет работать для Live Query.

var httpServer = require('http').createServer(app);
var port = 1337;
httpServer.listen(port, function() {
console.log('Parse Server running at ${port}');
console.log("The value of port is " + port);
});
ParseServer.createLiveQueryServer(httpServer);

Ожидаемые результаты

Мы должны получить обновление события согласно нашей подписке.

Фактический результат

Не получено обновление событий согласно подписанному запросу,

Настройка среды

Сервер

parse-версия сервера (Будьте конкретны! Не говорите «последний».): [2.3.8]

Операционная система: [Linux]

[Удаленный сервер - Azure]

База данных

Версия MongoDB: [3.4]

[Удаленный сервер - Azure]

Журналы / Трассировка

Сервер:

[32minfo� [39m: Parse LiveQuery Server начинает работать

� [32minfo� [39m: Создать нового клиента: 1

Код клиента iOS:

import UIKit
import Parse
import ParseLiveQuery

class LiveQueryManager {
    static let shared = LiveQueryManager()
    var liveQueryClient = ParseLiveQuery.Client()
    var subscription: Subscription<PostQuestionMessage>?
    var messagesQuery: PFQuery<PostQuestionMessage> {
        return (PostQuestionMessage.query()?
            .whereKey("type", equalTo: 2)) as! PFQuery<PostQuestionMessage>
    }
    init(){
        liveQueryClient.shouldPrintWebSocketLog = true
        liveQueryClient.shouldPrintWebSocketTrace = true
    }
    fileprivate func printMessage(_ message: PostQuestionMessage) {
        let createdAt = message.createdAt ?? Date()
        print("\(createdAt) : \(message.message ?? "")")
    }

    func subscribeToUpdates() {

        //https://stackoverflow.com/questions/44273455/parse-cloud-livequeries-ios-client-doesnt-work
        self.subscription = self.liveQueryClient.subscribe(messagesQuery)
        self.subscription = self.subscription?.handleEvent({ (_, event) in
            switch event {
            case .created(let object):
                print("Event Created")
                self.printMessage(object)
            // do stuff
            case .updated(let object):
                print("Event Updated")
                self.printMessage(object)

            default:
                break // do other stuff or do nothing
            }
        })

    }
    func disconnectFromSubscription() {
        if let objSubcription = self.subscription {
            self.liveQueryClient.unsubscribe(messagesQuery, handler: objSubcription)
        }

    }
    func printSubscription () {
        if let objSubscription = self.subscription {
            print ("Subscription:\(objSubscription)")
            print ("Client:\(self.liveQueryClient)")
            print ("Client userDisconnected:\(self.liveQueryClient.userDisconnected)")
        }
    }


}
...