diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.zig | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main.zig b/src/main.zig index 1e7f9e8..cf64c8e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -21,7 +21,12 @@ fn handle_websocket(alloc: std.mem.Allocator, websocket: *WebSocket) void { m.unlock(); defer { - for (0..clients.items.len) |i| { if (std.mem.eql(u8, websocket.key, clients.items[i].key)) { _ = clients.swapRemove(i); break; } } + for (0..clients.items.len) |i| { + if (std.mem.eql(u8, websocket.key, clients.items[i].key)) { + _ = clients.swapRemove(i); + break; + } + } std.debug.print("{} clients\n", .{clients.items.len}); } @@ -129,10 +134,14 @@ pub fn main(init: std.process.Init) !void { const address = try std.Io.net.IpAddress.parseIp4("0.0.0.0", port); var net_server = try address.listen(io, .{ .reuse_address = true }); + var group: Io.Group = .init; + defer group.cancel(io); + while (true) { const stream = try net_server.accept(io); + errdefer stream.close(io); - _ = io.async(handle_request, .{ arena, io, stream }); + group.async(io, handle_request, .{ arena, io, stream }); // std.debug.print("created http thread\n", .{}); } |
