diff --git a/src/main/kotlin/net/ccbluex/netty/http/websocket/WebSocketController.kt b/src/main/kotlin/net/ccbluex/netty/http/websocket/WebSocketController.kt index c822c58..5473057 100644 --- a/src/main/kotlin/net/ccbluex/netty/http/websocket/WebSocketController.kt +++ b/src/main/kotlin/net/ccbluex/netty/http/websocket/WebSocketController.kt @@ -37,17 +37,19 @@ class WebSocketController { /** * Broadcasts a message to all connected clients. * - * @param message The message to broadcast. + * @param text The message to broadcast. * @param failure The action to take if a failure occurs. */ fun broadcast(text: String, failure: (ChannelHandlerContext, Throwable) -> Unit = { _, _ -> }) { + val frame = TextWebSocketFrame(text) activeContexts.forEach { handlerContext -> try { - handlerContext.channel().writeAndFlush(TextWebSocketFrame(text)) + handlerContext.channel().writeAndFlush(frame.retain()) } catch (e: Throwable) { failure(handlerContext, e) } } + frame.release() } /** @@ -79,4 +81,4 @@ class WebSocketController { activeContexts.remove(context) } -} \ No newline at end of file +}