Непостоянное соединение для флаттера / дротика http.Client () - PullRequest
0 голосов
/ 06 января 2020

У меня работает django -сервер , который работает с сессиями . Простой пример из моего views.py , которого должно быть достаточно для воспроизведения моей проблемы, приведен здесь:

def test(request):
    print("Session objects(")
    for k,v in request.session.items():
        print(k,v)
    print(")")
    request.session["a"] = "b"

Так что это просто печатает все в текущем сеансе и после этого сохраняет некоторые фиктивные данные в сеансе. Если я в первый раз получаю доступ к этому через браузер, вывод будет

Session objects(
)

, поэтому сессия будет пустой, как и ожидалось. Затем после обновления сайта вывод:

Session objects(
a b
)

также, как и ожидалось, так что все, кажется, работает просто отлично.

Но теперь я хочу использовать сайт с моим приложением флаттера. Для этого я использовал пакет flutter import 'package:http/http.dart' as http следующим образом:

var client = http.Client();

String host = ...; // just the ip:port to my host

void my_request() async {
  var response = await client.get(host + "/path/to/test/");
  response = await client.get(host + "/path/to/test/");
}

Поэтому все, что нужно сделать, это запросить мой сайт дважды, как я делал это ранее в браузере вручную. Но теперь мой сервер просто регистрируется дважды:

Session objects(
)

Таким образом, очевидно, что у клиента нет постоянного соединения, где сеанс не сохраняется. Но в соответствии с do c https://pub.dev/packages/http это должно работать

Если вы делаете несколько запросов к одному и тому же серверу, вы можете сохранить постоянное соединение, используя Клиент, а не разовые запросы

Это проблема моего приложения флаттера / дротика или проблема на моем сервере? Возможно, он большой в пакете флаттера?

примечание: сначала я подумал, что это может быть проблемой с аутентификацией csrf, поэтому отключил ее на моем сервере, но это ничего не меняет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...