extends Channel signal on_channel_token_received(msg: ProvidedConnectionTokenMessage) var queue: Array[Message.Channels] func get_channel_location() -> String: return "connection" func connect_to_channel(token: String) -> void: if self.socket.get_ready_state() != WebSocketPeer.STATE_CLOSED: return self.connect_socket(token) func request_channel_token(channel: Message.Channels) -> void: if not queue.has(channel): queue.push_back(channel) func _process(_delta: float) -> void: self.socket.poll() if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN: return for i in queue.size(): var msg := RequestConnectionTokenMessage.new() msg.channel = queue[i] self.socket.send_text(Message.serialize(msg)) queue.remove_at(i) while self.socket.get_available_packet_count(): var msg: ProvidedConnectionTokenMessage = ( Message . deserialize( self.socket.get_packet().get_string_from_utf8(), [ProvidedConnectionTokenMessage], ) ) if msg == null: continue on_channel_token_received.emit(msg)