我用QTcpServer编写了一个小型web服务器,等等.它工作得很好,所以我想进一步了解并实现Qt的WebSocket功能。我希望WebSocket可以在与我的web服务器相同的端口上访问(由于我的客户端网络的限制)。
我的WebSocket应该可以在/admin/socket上访问,因此我需要一种将QTcpSocket (从/admin/socket__的请求处理程序中访问)“升级”到QWebSocket的方法。QWebSocket在这构造函数中具有此功能,这是这升级方法在QWebSocketServerPrivate中使用的,但它都是私有的,仅由QWebSocketServer在内部使用。
有什么方法可以达到我上面所描述的吗?我必须实现我自己的WebSocket处理程序吗?
发布于 2016-04-01 18:56:45
您需要将所需的文件从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附带一个源代码是有原因的:当它有意义时,您应该使用它!
https://stackoverflow.com/questions/36363411
复制相似问题