照常添加适用的地方
scope (exit)
{
listener.stopListening();
}
还不足以通过 Ctrl+C 优雅地关闭 vibe.d 程序,因为它也使用像这样实现的 Websocket:
routes.get("/ws", handleWebSockets(&handleWebSocketConnection));
routes
是 URLRouter
的实例,相关处理程序看起来像这样
void handleWebSocketConnection(scope WebSocket socket)
{
...
while (true) {
...
if (!socket.connected) break;
...
socket.send("xxxx");
}
...
}
这是我的想法:
scope (exit)
{
scope WebSocket socket;
socket.close;
//
listener.stopListening();
}