Client/scripts/channel/connection/connection_channel.gd

43 lines
1 KiB
GDScript3
Raw Normal View History

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)