drain method
Removes and returns all non-expired messages. Expired messages are discarded.
Implementation
List<WebSocketMessage> drain() {
final result = <WebSocketMessage>[];
while (_queue.isNotEmpty) {
final item = _queue.removeFirst();
if (!item.isExpired) result.add(item.message);
}
return result;
}