Я пытаюсь установить соединение с сервером FCM XMPP в 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();
Задача ещё не решена.
Других решений пока нет …