mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-04-14 08:16:03 +02:00
- remove webSockets from List after disconnect.
- leave it up to the QtScript to delete the WebSocket / WebSocketServer objects
This commit is contained in:
parent
f512205f6f
commit
9edba451eb
3 changed files with 8 additions and 7 deletions
|
@ -42,9 +42,7 @@ QScriptValue WebSocketClass::constructor(QScriptContext* context, QScriptEngine*
|
|||
if (context->argumentCount() > 0) {
|
||||
url = context->argument(0).toString();
|
||||
}
|
||||
auto webSocketClass = new WebSocketClass(engine, url);
|
||||
connect(static_cast<ScriptEngine*>(engine), &ScriptEngine::finished, webSocketClass, &QObject::deleteLater);
|
||||
return engine->newQObject(webSocketClass);
|
||||
return engine->newQObject(new WebSocketClass(engine, url), QScriptEngine::ScriptOwnership);
|
||||
}
|
||||
|
||||
WebSocketClass::~WebSocketClass() {
|
||||
|
@ -111,7 +109,7 @@ void qWSCloseCodeFromScriptValue(const QScriptValue &object, QWebSocketProtocol:
|
|||
}
|
||||
|
||||
QScriptValue webSocketToScriptValue(QScriptEngine* engine, WebSocketClass* const &in) {
|
||||
return engine->newQObject(in);
|
||||
return engine->newQObject(in, QScriptEngine::ScriptOwnership);
|
||||
}
|
||||
|
||||
void webSocketFromScriptValue(const QScriptValue &object, WebSocketClass* &out) {
|
||||
|
|
|
@ -50,6 +50,8 @@ public:
|
|||
CLOSED
|
||||
};
|
||||
|
||||
QWebSocket* getWebSocket() { return _webSocket; }
|
||||
|
||||
int getConnecting() const { return CONNECTING; };
|
||||
int getOpen() const { return OPEN; };
|
||||
int getClosing() const { return CLOSING; };
|
||||
|
|
|
@ -40,9 +40,7 @@ QScriptValue WebSocketServerClass::constructor(QScriptContext* context, QScriptE
|
|||
serverName = serverNameOption.toString();
|
||||
}
|
||||
}
|
||||
auto webSocketServerClass = new WebSocketServerClass(engine, serverName, port);
|
||||
connect(static_cast<ScriptEngine*>(engine), &ScriptEngine::finished, webSocketServerClass, &QObject::deleteLater);
|
||||
return engine->newQObject(webSocketServerClass);
|
||||
return engine->newQObject(new WebSocketServerClass(engine, serverName, port), QScriptEngine::ScriptOwnership);
|
||||
}
|
||||
|
||||
WebSocketServerClass::~WebSocketServerClass() {
|
||||
|
@ -55,6 +53,9 @@ WebSocketServerClass::~WebSocketServerClass() {
|
|||
void WebSocketServerClass::onNewConnection() {
|
||||
WebSocketClass* newClient = new WebSocketClass(_engine, _webSocketServer.nextPendingConnection());
|
||||
_clients << newClient;
|
||||
connect(newClient->getWebSocket(), &QWebSocket::disconnected, [newClient, this]() {
|
||||
_clients.removeOne(newClient);
|
||||
});
|
||||
emit newConnection(newClient);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue