basic udp client

This commit is contained in:
2024-04-17 16:48:11 +02:00
parent 48ae660029
commit 04c03ef6b6
4 changed files with 80 additions and 40 deletions

View File

@@ -0,0 +1,45 @@
extends Node
var udp_peer: PacketPeerUDP = PacketPeerUDP.new()
var server_ip: String = "45.93.249.177" # Replace with your server's IP
var server_port: int = 4477 # Replace with your server's port
func _ready():
var err = udp_peer.bind(server_port, "*")
if err != OK:
print("Failed to bind to port: ", server_port)
return
print("Listening on port: ", server_port)
# Send a message to the server to initiate session ID assignment
var payload: Dictionary = {
"type": "init",
}
send_payload(payload)
func _process(_delta):
if udp_peer.get_available_packet_count() > 0:
var packet = udp_peer.get_packet()
var message: String = packet.get_string_from_utf8()
print("Received: ", message)
func send_message(message: String) -> void:
var payload: Dictionary = {
"type": "message",
"msg": message
}
send_payload(payload)
func send_payload(payload: Dictionary):
var packet = JSON.stringify(payload).to_utf8_buffer()
udp_peer.set_dest_address(server_ip, server_port)
udp_peer.put_packet(packet)
func move(vec: Vector2i):
var payload: Dictionary = {
"type": "move",
"direction": {
"x": vec.x,
"y": vec.y
}
}
send_payload(payload)

View File

@@ -1,42 +1,4 @@
extends Control
var websocket_url = "wss://acecore.lol:4477/ws"
var websocket_peer = WebSocketPeer.new()
var payload: Dictionary = {
"type": "broadcast",
"msg": "TESTBUTTON_PRESSED"
}
func _ready():
var error = websocket_peer.connect_to_url(websocket_url)
if error == OK:
print("Connected to WebSocket server")
send_message("Connected client")
else:
print("Failed to connect to WebSocket server")
func _process(_delta):
websocket_peer.poll()
var state = websocket_peer.get_ready_state()
if state == WebSocketPeer.STATE_OPEN:
while websocket_peer.get_available_packet_count():
print("Packet: ", websocket_peer.get_packet().get_string_from_utf8())
elif state == WebSocketPeer.STATE_CLOSING:
# Keep polling to achieve proper close.
pass
elif state == WebSocketPeer.STATE_CLOSED:
var code = websocket_peer.get_close_code()
var reason = websocket_peer.get_close_reason()
print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1])
set_process(false)
func send_message(message: String) -> void:
var state = websocket_peer.get_ready_state()
if state == WebSocketPeer.STATE_OPEN:
websocket_peer.send(str(payload).to_utf8_buffer())
else:
print("WebSocket connection is not open. Current state: ", state)
extends Node
func _on_button_pressed():
send_message("Test button pressed")
UdpClient.send_message("TEST BUTTON PRESSED")