delete WebSockets on ScriptEngine finish

This commit is contained in:
Thijs Wenker 2015-08-21 20:20:50 +02:00
parent c7346209fb
commit d3a6833133
2 changed files with 7 additions and 4 deletions

View file

@ -42,7 +42,9 @@ QScriptValue WebSocketClass::constructor(QScriptContext* context, QScriptEngine*
if (context->argumentCount() > 0) {
url = context->argument(0).toString();
}
return engine->newQObject(new WebSocketClass(engine, url));
auto webSocketClass = new WebSocketClass(engine, url);
connect(static_cast<ScriptEngine*>(engine), &ScriptEngine::finished, webSocketClass, &QObject::deleteLater);
return engine->newQObject(webSocketClass);
}
WebSocketClass::~WebSocketClass() {
@ -54,7 +56,7 @@ void WebSocketClass::send(QScriptValue message) {
}
void WebSocketClass::close() {
this->close(QWebSocketProtocol::CloseCode::CloseCodeNormal);
this->close(QWebSocketProtocol::CloseCodeNormal);
}
void WebSocketClass::close(QWebSocketProtocol::CloseCode closeCode) {
@ -67,7 +69,7 @@ void WebSocketClass::close(QWebSocketProtocol::CloseCode closeCode, QString reas
void WebSocketClass::handleOnClose() {
bool hasError = false;
if (_webSocket->error() != QAbstractSocket::SocketError::UnknownSocketError) {
if (_webSocket->error() != QAbstractSocket::UnknownSocketError) {
hasError = true;
if (_onErrorEvent.isFunction()) {
_onErrorEvent.call();
@ -76,7 +78,7 @@ void WebSocketClass::handleOnClose() {
if (_onCloseEvent.isFunction()) {
QScriptValueList args;
QScriptValue arg = _engine->newObject();
arg.setProperty("code", hasError ? QWebSocketProtocol::CloseCode::CloseCodeAbnormalDisconnection : _webSocket->closeCode());
arg.setProperty("code", hasError ? QWebSocketProtocol::CloseCodeAbnormalDisconnection : _webSocket->closeCode());
arg.setProperty("reason", _webSocket->closeReason());
arg.setProperty("wasClean", !hasError);
args << arg;

View file

@ -49,6 +49,7 @@ WebSocketServerClass::~WebSocketServerClass() {
if (_webSocketServer.isListening()) {
close();
}
_clients.empty();
}
void WebSocketServerClass::onNewConnection() {