oh-my-git/scenes/tcp_server.gd

46 lines
992 B
GDScript3
Raw Permalink Normal View History

2020-09-15 09:30:19 +02:00
extends Node
signal data_received(string)
signal new_connection
2020-09-15 09:30:19 +02:00
2023-09-06 16:04:23 +02:00
@export var port: int
2020-09-15 09:30:19 +02:00
2023-09-06 16:04:23 +02:00
var _s = TCPServer.new()
2020-09-15 09:30:19 +02:00
var _c
var _connected = false
func _ready():
start()
func start():
_s.listen(port)
2020-09-24 10:10:14 +02:00
2020-09-15 12:36:22 +02:00
func _process(_delta):
2020-09-15 09:30:19 +02:00
if _s.is_connection_available():
if _connected:
_c.disconnect_from_host()
helpers.crash("Dropping active connection")
2020-09-15 09:30:19 +02:00
_c = _s.take_connection()
_connected = true
emit_signal("new_connection")
2020-09-15 09:30:19 +02:00
print("connected!")
if _connected:
if _c.get_status() != StreamPeerTCP.STATUS_CONNECTED:
_connected = false
print("disconnected")
# var available = _c.get_available_bytes()
# while available > 0:
# var data = _c.get_utf8_string(available)
# emit_signal("data_received", data)
# available = _c.get_available_bytes()
2020-09-15 09:30:19 +02:00
func send(text):
if _connected:
2020-09-24 10:10:14 +02:00
text += "\n"
_c.put_utf8_string(text)
var response = _c.get_utf8_string()
emit_signal("data_received", response)
2020-09-15 09:30:19 +02:00
else:
helpers.crash("Trying to send data on closed connection")