Colyseus is fully open-source. Please consider donating any amount to support the project ❤️
Graceful Shutdown¶
Colyseus provides graceful shutting down mechanism by default. These actions will be performed before the process kill itself:
- Disconnect all connected clients asynchronously (
Room#onLeave) - Dispose all spawned rooms asynchronously (
Room#onDispose) - Perform optional asynchronous callback before shutting down the process
Server#onShutdown
If you're performing async tasks on onLeave / onDispose, you should return a Promise, and resolve it when the task is ready. The same applies to onShutdown(callback).
Returning a Promise¶
By returning a Promise, the server will wait for them to be completed before killing the worker process.
import { Room } from "colyseus";
class MyRoom extends Room {
onLeave (client) {
return new Promise((resolve, reject) => {
doDatabaseOperation((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
onDispose () {
return new Promise((resolve, reject) => {
doDatabaseOperation((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
}
Using async¶
The async keyword will makes your function return a Promise under the hood. Read more about Async / Await.
import { Room } from "colyseus";
class MyRoom extends Room {
async onLeave (client) {
await doDatabaseOperation(client);
}
async onDispose () {
await removeRoomFromDatabase();
}
}
Process shutdown callback¶
You can also listen for process shutdown by setting a onShutdown callback.
import { Server } from "colyseus";
let server = new Server();
server.onShutdown(function () {
console.log("master process is being shut down!");
});
Colyseus is fully open-source. Please consider donating any amount to support the project ❤️