On 2014-09-12 20:33:16 +0000, Alexander Breckel said:
I'm trying to implement a simple server that broadcasts messages
received from a websocket to all other websockets. For this I'm keeping
track of all open websockets in a global variable:WebSocket[uint] sockets; uint id = 0; void handleConn(WebSocket ws) { sockets[id++] = ws; ... } static this() { auto router = new URLRouter; router.get("/ws", handleWebSockets(&handleConn)); }
This version of
handleWebSockets
providing a WebSocket is deprecated.
Instead, I should use ascope
parameter:void handleConn(scope WebSocket ws) { ... }
Currently dmd accepts this change, even though it would leak a
reference to a scope parameter.How can I implement broadcasting with
scope WebSocket
?
Add some scope guards to remove the websocket from the global list when
it closes.