Client/scripts/channel/connection/connection_channel.gd
Snoweuph 1531505d2f
All checks were successful
Quality Check / Linting (push) Successful in 6s
Quality Check / Linting (pull_request) Successful in 6s
NOTICKET: Adding WS Structure and Example
2025-02-18 13:02:40 +01:00

42 lines
1 KiB
GDScript

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)