Как установить соединение с сервером Google Firebase XMPP? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь установить соединение с сервером XMPP FCM в C ++ с помощью Swifter.Но после первого запроса сервер отправляет мне неизвестные данные, а библиотека отключает меня с помощью XMLError.Например,

клиент: <?xml version="1.0"?><stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" to="gcm.googleapis.com" version="1.0"> сервер: \ x15 \ x03 \ x01 \ x00 \ x02 \ x02 \ x46 Используемые настройки:

SimpleEventLoop eventLoop;
BoostNetworkFactories networkFactories(&eventLoop);

ClientOptions co;
co.manualPort = 5236;
co.manualHostname = "fcm-xmpp.googleapis.com";
co.useTLS = ClientOptions::UseTLS::RequireTLS;
co.sessionShutdownTimeoutInMilliseconds = 2000;

Client client("<myid>@gcm.googleapis.com", "mypass", &networkFactories);

client.setAlwaysTrustCertificates();

client.onDataRead.connect([&] (const SafeByteArray &smt) {
    std::cout << "onDataRead" << std::endl;
    for (auto &c : smt) {
        std::cout << std::hex << (int)c << " ";
    }
    std::cout << std::endl;
    std::cout << std::string(smt.begin(), smt.end()) << std::endl;
});

client.onDataWritten.connect([&] (const SafeByteArray &smt) {
    std::cout << "onDataWritten" << std::endl;
    std::cout << std::string(smt.begin(), smt.end()) << std::endl;
});

client.onDisconnected.connect([&] (const boost::optional<ClientError> &smt) {
    std::cout << "onDisconnected" << std::endl;
    std::cout << smt.value() << std::endl;
    client.connect(co);
});

client.connect(co);
eventLoop.run();
...