forked from cory/tildefriends
Kill tasks when their websocket closes. Sigh.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3779 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
1734c88627
commit
df0bb102dc
14
core/app.js
14
core/app.js
@ -38,6 +38,18 @@ function socket(request, response, client) {
|
|||||||
var options = {};
|
var options = {};
|
||||||
var credentials = auth.query(request.headers);
|
var credentials = auth.query(request.headers);
|
||||||
|
|
||||||
|
response.onClose = async function() {
|
||||||
|
if (process && process.task) {
|
||||||
|
process.task.kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response.onError = async function(error) {
|
||||||
|
if (process && process.task) {
|
||||||
|
process.task.kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
response.onMessage = async function(event) {
|
response.onMessage = async function(event) {
|
||||||
if (event.opCode == 0x1 || event.opCode == 0x2) {
|
if (event.opCode == 0x1 || event.opCode == 0x2) {
|
||||||
var message;
|
var message;
|
||||||
@ -110,7 +122,7 @@ function socket(request, response, client) {
|
|||||||
}
|
}
|
||||||
} else if (event.opCode == 0x8) {
|
} else if (event.opCode == 0x8) {
|
||||||
// Close.
|
// Close.
|
||||||
if (process) {
|
if (process && process.task) {
|
||||||
process.task.kill();
|
process.task.kill();
|
||||||
}
|
}
|
||||||
response.send(event.data, 0x8);
|
response.send(event.data, 0x8);
|
||||||
|
@ -301,10 +301,14 @@ function handleWebSocketRequest(request, response, client) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
response.onClose();
|
||||||
|
client.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
client.onError(function(error) {
|
client.onError(function(error) {
|
||||||
logError(client.peerName + " - - [" + new Date() + "] " + error);
|
logError(client.peerName + " - - [" + new Date() + "] " + error);
|
||||||
|
response.onError(error);
|
||||||
});
|
});
|
||||||
|
|
||||||
let headers = {
|
let headers = {
|
||||||
|
@ -286,7 +286,7 @@ static JSValue _taskstub_getExports(JSContext* context, JSValueConst this_val, i
|
|||||||
tf_taskstub_t* stub = JS_GetOpaque(this_val, _classId);
|
tf_taskstub_t* stub = JS_GetOpaque(this_val, _classId);
|
||||||
promiseid_t promise = -1;
|
promiseid_t promise = -1;
|
||||||
JSValue result = tf_task_allocate_promise(stub->_owner, &promise);
|
JSValue result = tf_task_allocate_promise(stub->_owner, &promise);
|
||||||
tf_task_send_promise_message(stub->_owner, (tf_taskstub_t*)stub, kGetExports, promise, JS_UNDEFINED);
|
tf_task_send_promise_message(stub->_owner, stub, kGetExports, promise, JS_UNDEFINED);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,7 +369,7 @@ static JSValue _taskstub_execute(JSContext* context, JSValueConst this_val, int
|
|||||||
tf_taskstub_t* stub = JS_GetOpaque(this_val, _classId);
|
tf_taskstub_t* stub = JS_GetOpaque(this_val, _classId);
|
||||||
promiseid_t promise = -1;
|
promiseid_t promise = -1;
|
||||||
JSValue result = tf_task_allocate_promise(stub->_owner, &promise);
|
JSValue result = tf_task_allocate_promise(stub->_owner, &promise);
|
||||||
tf_task_send_promise_message(stub->_owner, (tf_taskstub_t*)stub, kExecute, promise, argv[0]);
|
tf_task_send_promise_message(stub->_owner, stub, kExecute, promise, argv[0]);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user