Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- var http_server = TCPServer.new()
- var clients = []
- func _ready():
- randomize()
- Engine.max_fps = 5 # Частота обработки _process(_delta)
- #http_server.listen(9497) # Запуск сервера на порту 9497
- http_server.listen(9497, "127.0.0.1") # Запуск сервера на порту 9497, принимаем только локальные запросы
- print("Godot HTTP сервер запущен на порту 9497")
- func _process(_delta):
- #print(randi() % 50)
- #print(randfn())
- # Принимаем новые подключения
- if http_server.is_connection_available():
- var client = http_server.take_connection()
- if client:
- clients.append(client)
- # Обрабатываем запросы клиентов
- var disconnected_clients = []
- for client in clients:
- if client.get_status() != StreamPeerTCP.STATUS_CONNECTED: # Проверяем статус соединения
- disconnected_clients.append(client)
- continue # Пропускаем обработку для отключенных клиентов
- if client.get_available_bytes() > 0:
- var request = client.get_partial_data(client.get_available_bytes())[1].get_string_from_utf8()
- print("Получен запрос:\n", request)
- if "GET /" in request:
- send_http_response(client)
- # Удаляем отключенных клиентов
- for client in disconnected_clients:
- clients.erase(client)
- func send_http_response(client):
- var response = "HTTP/1.1 200 OK\r\n"
- response += "Content-Type: text/plain\r\n"
- response += "Content-Length: 13\r\n"
- response += "Connection: close\r\n"
- response += "\r\n"
- response += "Hello, world!"
- client.put_data(response.to_utf8_buffer())
- client.disconnect_from_host() # Закрываем соединение
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement