来自QTcpSocket的QWebSocket

时间:2016-04-01 18:28:43

标签: qt websocket qt5 qtwebsockets

我已经使用QTcpServer等编写了一个小型Web服务器...它工作正常,所以我想进一步实现Qt的WebSocket功能。我希望WebSocket-Server可以在与我的Web服务器相同的端口上访问(由于我的客户端网络的限制)。

我的WebSocket-Server应该可以在/admin/socket访问,所以我需要一种方法来升级' QTcpSocket (可从/admin/socket 的请求处理程序访问 QWebSocket )。 QWebSocket在this构造函数中具有此功能,它由QWebSocketServerPrivate中的this升级方法使用,但它全部是私有的,仅由QWebSocketServer在内部使用。

有没有办法实现我上面描述的内容?我是否必须实现自己的WebSocket处理程序?

1 个答案:

答案 0 :(得分: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附带一个源代码是有原因的:你应该在有意义的时候使用它!