Как отправить запрос на выбор маршрута Websocket? - PullRequest
0 голосов
/ 29 апреля 2020

Я создаю небольшую многопользовательскую игру, используя все серверные AWS сервисы в бэкэнде (API Gateway, Lambda, DynamoDB и др. c.). По образованию я не инженер-программист, поэтому я чаще сталкиваюсь с препятствиями.

Я столкнулся с проблемами при попытке отправить действия на AWS API-шлюз с использованием соединения через Websocket. Всякий раз, когда я пытаюсь отправить строку json, она принимается API-шлюзом с присутствием \ "отказов (например," body ":" {\ "action \": \ "get_player_status \", \ "username \": \ "asdasd \"} "). Шлюз API не может разобрать это и всегда вызывает действие $ default. У меня есть ключ маршрута с именем" get_player_status ", но он не вызывается.

Я пробовал разные подходит для борьбы с этим, но безуспешно. Сейчас у меня есть функция Lambda (Python), которая принимает все сообщения $ default, исправляет строку json, а затем перенаправляет ее в правильную функцию Lambda. Предполагается, что шлюз будет работать, но с гораздо большей задержкой и стоимостью.

Есть идеи?

Фрагмент кода из Unity в C#:

using NativeWebSocket;

[Serializable]
public class SendAction
{
    public string action;
    public string username;
}


void GetPlayerStatus()
{
    SendAction getStatus = new SendAction();
    getStatus.action = "get_player_status";
    getStatus.username = username;

    string jsonGetStatus = JsonUtility.ToJson(getStatus);

    SendWebSocketMessage(jsonGetStatus);
}
...