2016-04-01 26 views
1

私はQTcpServerなどを使って小さなWebサーバーを作成しました...それはうまく動作するので、もう少し手を加えてQtのWebSocket機能を実装したいと考えていました。 WebSocket-Serverが私のWebサーバーと同じポート(クライアントネットワークの制限のために)に到達できるようにしたい。 /admin/socketはので、私はQWebSocketQTcpSocket/admin/socketのための要求ハンドラからアクセス可能)を「アップグレード」する方法が必要でQWebSocket from QTcpSocket

私のWebSocket-Serverがアクセスできる必要があります。 QWebSocketはQWebSocketServerPrivateのthisアップグレードメソッドで使用されるthisコンストラクタでこの機能を備えていますが、すべてプライベートであり、QWebSocketServerによって内部的にのみ使用されます。

上記のことを達成する方法はありますか?私自身のWebSocketハンドラを実装する必要がありますか?

答えて

2

Qtのソースからプロジェクトに必要なファイルをコピーし、QWebSocketをネームスペースにラップして、Qtのものと衝突しないようにして、コンストラクタを非プライベートにする必要があります。これは、独自のコードを大量に記述することなく、未定義の動作を呼び出さずに、これを達成する唯一の方法です。

タイプを使用するには、usingで表示します。それは、Qtの::QObjectを隠します:

#include <QtCore> 

namespace Foo { class QObject {}; } 

int main() { 
    using Foo::QObject; 

    //   ours vvvvvvv  Qt's vvvvvvv 
    Q_ASSERT(sizeof(QObject) < sizeof(::QObject)); 
} 

Qtの理由のためのソースコードが付属しています:あなたはそれが理にかなっているときにそれを使うことになっています!