我已经使用QTcpServer等编写了一个小型Web服务器...它工作正常,所以我想进一步实现Qt的WebSocket功能。我希望WebSocket-Server可以在与我的Web服务器相同的端口上访问(由于我的客户端网络的限制)。
我的WebSocket-Server应该可以在/admin/socket
访问,所以我需要一种方法来升级' QTcpSocket (可从/admin/socket
的请求处理程序访问 QWebSocket )。 QWebSocket在this构造函数中具有此功能,它由QWebSocketServerPrivate中的this升级方法使用,但它全部是私有的,仅由QWebSocketServer在内部使用。
有没有办法实现我上面描述的内容?我是否必须实现自己的WebSocket处理程序?
答案 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附带一个源代码是有原因的:你应该在有意义的时候使用它!