Funkcje webowe w Godot

in polish •  26 days ago 

Godot Engine oferuje różne funkcje i klasy, które pozwalają na obsługę zasobów sieciowych, takich jak HTTP, WebSocket czy integracja z przeglądarką internetową. Poniżej znajdziesz szczegółowy przegląd funkcji sieciowych dostępnych w Godot (w szczególności dla wersji 4.x).


1. HTTP Request – Pobieranie zasobów przez HTTP

Klasa HTTPRequest pozwala na wysyłanie zapytań HTTP (GET, POST itp.) i odbieranie danych z serwera.

  • Metody HTTP obsługiwane:
    • GET – pobieranie danych.
    • POST – wysyłanie danych na serwer.
    • PUT, DELETE, i inne.

Przykład: Wykonywanie zapytania HTTP GET

extends Node

@onready var http_request = HTTPRequest.new()

func _ready():
    add_child(http_request)
    http_request.request("https://api.example.com/data")

func _on_request_completed(result, response_code, headers, body):
    if response_code == 200:
        var response = body.get_string_from_utf8()
        print("Response: ", response)
    else:
        print("Error: ", response_code)

Parametry konfiguracyjne:

  • Możesz wysyłać dane w formacie JSON:
var data = {"key": "value"}
http_request.request(
    "https://api.example.com/data",
    ["Content-Type: application/json"],
    true,
    HTTPClient.METHOD_POST,
    JSON.print(data)
)


2. WebSocket – Komunikacja w czasie rzeczywistym

Godot obsługuje WebSockety za pomocą klas WebSocketClient i WebSocketServer.

Klient WebSocket:

extends Node

@onready var ws = WebSocketClient.new()

func _ready():
    ws.connect("connection_established", self, "_on_connection_established")
    ws.connect_to_url("ws://echo.websocket.org")

func _on_connection_established(protocol):
    print("Connected to WebSocket!")
    ws.send_text("Hello, WebSocket!")

func _process(delta):
    ws.poll()  # Obsługuje przychodzące wiadomości

func _on_data_received(data):
    print("Received: ", data)

  • Zastosowanie: Idealne do gier wieloosobowych w czasie rzeczywistym lub aplikacji korzystających z serwisów live (np. chaty, giełdy danych).

Serwer WebSocket:

Możesz również hostować serwer WebSocket w Godot:

extends Node

@onready var server = WebSocketServer.new()

func _ready():
    server.listen(12345)  # Otwórz port 12345
    server.connect("client_connected", self, "_on_client_connected")

func _on_client_connected(client_id):
    print("Client connected: ", client_id)

func _process(delta):
    server.poll()


3. JSON, REST API i Webhooks

Godot ułatwia pracę z formatami JSON, które są powszechne w komunikacji z serwerami REST API.

Obsługa JSON:

  • Parsowanie danych JSON:
var json_string = '{"name": "Godot", "version": 4}'
var result = JSON.parse(json_string)

if result.error == OK:
    var data = result.result
    print(data["name"])  # Wyświetli: Godot
else:
    print("Error parsing JSON")

Praca z REST API:

Użyj klasy HTTPRequest w połączeniu z JSON do komunikacji z serwerami REST.

  • Wysyłanie i odbieranie JSON:
var payload = {"username": "admin", "password": "1234"}
http_request.request(
    "https://api.example.com/login",
    ["Content-Type: application/json"],
    true,
    HTTPClient.METHOD_POST,
    JSON.print(payload)
)


4. WebAssembly i Web Export

Godot pozwala na eksportowanie projektów do przeglądarek za pomocą WebAssembly. Możesz tworzyć gry i aplikacje, które działają bezpośrednio w przeglądarce.

Funkcje specyficzne dla przeglądarki:

  • JavaScript.eval(): Wysyła polecenia JavaScript do przeglądarki. if OS.has_feature("JavaScript"): JavaScript.eval("alert('Hello from Godot!')")
  • Integracja z przeglądarką: Możesz wymieniać dane między grą a środowiskiem przeglądarki.

Przykład: Wywołanie funkcji w przeglądarce:

if OS.has_feature("JavaScript"):
    var js_function = "function greet() { return 'Hello, Godot!'; } greet();"
    var result = JavaScript.eval(js_function)
    print(result)  # Wyświetli: Hello, Godot!


5. Obsługa plików zdalnych

Godot pozwala na pobieranie plików (np. obrazów lub danych) z zewnętrznych serwerów za pomocą HTTPRequest.

Przykład pobierania obrazu:

extends Sprite

@onready var http_request = HTTPRequest.new()

func _ready():
    add_child(http_request)
    http_request.request("https://example.com/image.png")

func _on_request_completed(result, response_code, headers, body):
    if response_code == 200:
        var image = Image.new()
        image.load_png_from_buffer(body)
        var texture = ImageTexture.new()
        texture.create_from_image(image)
        self.texture = texture


6. Zabezpieczenia i HTTPS

Godot obsługuje HTTPS, ale pamiętaj o skonfigurowaniu certyfikatów SSL, jeśli Twoje zapytania wymagają szyfrowania.

  • Certyfikaty SSL: Możesz skonfigurować je za pomocą HTTPClient lub HTTPRequest.
  • Upewnij się, że Twój serwer ma poprawnie skonfigurowane certyfikaty, aby uniknąć problemów z połączeniem.

Podsumowanie

Godot Engine oferuje szeroki wachlarz narzędzi do obsługi sieci, takich jak:

  1. HTTPRequest do zapytań HTTP.
  2. WebSocketClient i WebSocketServer do komunikacji w czasie rzeczywistym.
  3. JSON do pracy z danymi w formacie JSON.
  4. WebAssembly do eksportowania gier do przeglądarek.

Dzięki tym funkcjom możesz tworzyć zarówno gry sieciowe, jak i aplikacje internetowe oparte na Godot.

Published using WordPress Blurt Publisher from https://godot.com.pl.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!