你好亲爱的程序员, 我们尝试编写一个可以在windows phone和android上运行的应用程序。 这个应用程序的一部分是建立与websocket服务器的安全连接,这在Windows手机上不起作用。无论如何在Linux下工作都很完美。
//constructor opening connection
MeteorDDP::MeteorDDP(QString uri){
QUrl wsUri = QUrl("wss://"+uri+"/websocket");
qDebug()<<wsUri;
connect(&wsClient, &QWebSocket::textMessageReceived,this, &MeteorDDP::handleMessage);
connect(&wsClient, &QWebSocket::connected,this, &MeteorDDP::onConnected);
connect(&wsClient, &QWebSocket::stateChanged, this, &MeteorDDP::onStateChanged);
connect(&wsClient, static_cast<void(QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error),
[=](QAbstractSocket::SocketError error){
qDebug()<<error<<"error";
});
connect(&wsClient, &QWebSocket::sslErrors, this, &MeteorDDP::onSslError);
wsClient.open(wsUri);
wsClient.flush();
}
一个刚输出连接的方法:
void MeteorDDP::onConnected(){
qDebug()<<"connected";
}
H档:
#ifndef METEORDDP_H
#define METEORDDP_H
#include <QString>
#include <QHash>
#include <QUrl>
#include <QtWebSockets/QtWebSockets>
class MeteorDDP : public QObject
{
Q_OBJECT
public:
MeteorDDP(QString server);
protected:
QWebSocket wsClient;
void onConnected();
void onStateChanged(QAbstractSocket::SocketState state);
void onSslError(void);
void onError(QAbstractSocket::SocketError error);
}
方法:
void MeteorDDP::onStateChanged(QAbstractSocket::SocketState state){
qDebug() <<state<<"state Changed";
}
void MeteorDDP::onError(QAbstractSocket::SocketError error){
qDebug()<<error <<"error";
}
void MeteorDDP::onSslError(){
qDebug() <<"ssl error";
}