Skip to content

Nox7atra/UnitySimpleHttpServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unity Simple Http Server | Windows

Пример простого Http сервера и веб сервера встроенного в Unity. Бывает полезно для различных администрируемых проектов, стендов и т.п. Плюс в качестве примера сделан веб геймпад для простенькой игры

Установка через Unity Package Manager / Add package from git URL: https://github.com/Nox7atra/UnitySimpleHttpServer.git?path=/Assets/UnityHttpServer

Класс WebServer

Необходим для хостинга веб приложения внутри Unity приложения. Корневым каталогом является StreamingAssets. Относительный путь указывается в __Server Path__. Порт указывается в __Server Port__

Класс HTTPServer

Необходим для работы веб апи внутри Unity приложения. Порт указывается в __Server Port__

Класс HTTPServerHandler

Для расширения функциональности необходимо создавать наследников класса HTTPServerHandler. Наследники класса через рефлексию будут собраны в HTTPServer и будут автоматически обрабатываться.

Расширение ProcessParams - позволяет обрабатывать параметры запроса и добавлять функциональность (даже если запрос без параметров. Параметры пишутся через / как часть пути) Расширение GetAnswerData - позволяет писать свои сетевые ошибки, коды и возвращать данные о том, почему что-то пошло не так.

Пример:

public class GamepadHandler : HTTPServerHandler
{
    protected override string _route => "/gamepad/";
    private bool IsSuccess = true;
    private string ErrorMessage;
    public override void ProcessParams(string url)
    {
        base.ProcessParams(url);
        if(Enum.TryParse<KeyCode>(_params[1], true, out var key))
        {
            if (_params[0] == "down")
            {
                WebInput.SetKeyDown(key);
            }
            else
            {

                WebInput.SetKeyUp(key);
            }
        }
        else
        {
            ErrorMessage = $"Invalid keycode in param 1. There are no keycode {_params[0]}";
        }
    }
    public override NetworkAnswer GetAnswerData()
    {
        return new NetworkAnswer()
        {
            status = IsSuccess ? 200 : 500,
            errorMessage = IsSuccess ? null : ErrorMessage
        };
    }
}

В данном примере при настроенном ServerPort в классе HTTPServer. Для примера скажем порт 10021. Урл по которому вызывется апи будет выглядеть как http://localhost:10021/down/A или http://{YourPCIP}:10021/down/A. Где _param[0] = down, param[1] = "A".
Для того, чтобы узнать айпи своего компьютера достаточно прописать в cmd ipconfig.

Важно!

Для работы в редакторе посмотрите, чтобы для него в фаерволле редактор Unity мог принимать Public соединения

Не сделано:

  • Разделение на методы GET, POST и т.п.
  • Настройка политики CORS

Исходники веб геймпада:

https://github.com/Nox7atra/WebGamepadClient

Статья разбирающая решение:

https://habr.com/ru/post/652617/

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published