61 lines
1.3 KiB
GDScript
61 lines
1.3 KiB
GDScript
extends Node
|
|
|
|
@export var websocket_url = "ws://localhost:8080/ws"
|
|
var socket = WebSocketPeer.new()
|
|
var messageBuffer = []
|
|
|
|
func _ready() -> void:
|
|
set_process(false)
|
|
pass
|
|
|
|
func _process(_delta: float) -> void:
|
|
socket.poll()
|
|
if socket.get_ready_state() != socket.STATE_OPEN:
|
|
print("Socket closed?")
|
|
set_process(false)
|
|
return
|
|
|
|
while socket.get_available_packet_count():
|
|
messageBuffer.append(socket.get_packet().get_string_from_utf8())
|
|
|
|
func message_pending() -> bool:
|
|
return !messageBuffer.is_empty()
|
|
|
|
func get_message() -> String:
|
|
if messageBuffer.is_empty():
|
|
return ""
|
|
var mess = messageBuffer.pop_front()
|
|
return String(mess)
|
|
|
|
func connectSocket() -> void:
|
|
socket.poll()
|
|
if socket.get_ready_state() == socket.STATE_OPEN:
|
|
print("socket already connected")
|
|
return
|
|
|
|
var err = socket.connect_to_url(websocket_url)
|
|
if err != OK:
|
|
print("Unable to Connect")
|
|
set_process(false)
|
|
else:
|
|
while (socket.get_ready_state() != socket.STATE_OPEN):
|
|
socket.poll()
|
|
set_process(true)
|
|
|
|
func writeSocket(text: String) -> void:
|
|
if socket.get_ready_state() != socket.STATE_OPEN:
|
|
print("Socket closed?")
|
|
set_process(false)
|
|
return
|
|
|
|
var err = socket.send_text(text)
|
|
if err != OK:
|
|
print("Error sending message: ", err)
|
|
set_process(false)
|
|
|
|
func disconnectSocket() -> void:
|
|
socket.close()
|
|
|
|
func _exit_tree() -> void:
|
|
disconnectSocket()
|