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;
}