online multiplayer chess game (note server currently down)
Diffstat (limited to 'networking/Network.gd')
| -rw-r--r-- | networking/Network.gd | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/networking/Network.gd b/networking/Network.gd deleted file mode 100644 index 8091cb8..0000000 --- a/networking/Network.gd +++ /dev/null @@ -1,83 +0,0 @@ -extends Node -class_name Network - -const url := "wss://gd-chess-server.herokuapp.com/" - -var ws = WebSocketClient.new() -signal connection_established - - -func _init(): - SaveLoad.save_string("user://network_log.log", "") # overwrite last log - connect_ws_signals() - - -func connect_ws_signals(): - ws.connect("connection_established", self, "_connection_established") - ws.connect("connection_closed", self, "_connection_closed") - ws.connect("connection_error", self, "_connection_error") - ws.connect("data_received", self, "_data_recieved") - - -func close() -> void: - ws.disconnect_from_host(0, "Close") - - -func _connection_established(_protocol) -> void: - Log.net("CONNECTED: %s" % url) - emit_signal("connection_established") # bubble the signal up - - -func _connection_closed(_was_clean_closed) -> void: - Log.net("DISCONNECTED: %s" % url) - Log.err("Connection closed") - - -func _connection_error() -> void: - Log.net("DISCONNECTED: %s" % url) - Log.err("Connection error") - - -func _data_recieved(): - pass - - -func is_open_connection(): - return ws.get_connection_status() == ws.CONNECTION_CONNECTED - - -func open_connection(tries := 5, interval := 1.0) -> int: - yield(get_tree(), "idle_frame") - if is_open_connection(): - return OK - for try in tries + 1: - if Utils.request() == OK: - var err = ws.connect_to_url(url) - if !err: - yield(ws, "connection_established") - if is_open_connection(): - return OK - else: - Log.net("CONNECT: failed(%s)" % err) - if try != tries: - yield(get_tree().create_timer(interval), "timeout") - Log.net("CONNECT: failed") - return ERR_CANT_CONNECT - - -func _process(_delta: float) -> void: - var wsstatus: int = ws.get_connection_status() - if wsstatus == ws.CONNECTION_CONNECTING or wsstatus == ws.CONNECTION_CONNECTED: - ws.poll() - - -func send_packet(variant, header: String) -> int: - var pckt = {header = header, data = variant} - if is_open_connection(): - ws.get_peer(1).put_var(pckt) - Log.net("SENT: %s" % pckt) - return OK - else: - Log.err("not connected to server: packet %s not sent" % pckt) - Log.net("FAILED SEND: %s" % pckt) - return ERR_CONNECTION_ERROR |