Какой код ответа HTTP следует использовать, когда клиент упускает свой шанс принять предложение

1

Я пишу веб-приложение на С#. Одной функциональностью является то, что сервер отправит push-уведомление, предлагающее клиенту возможность совершить раунд работы. Клиент может принять или отказаться от этой работы.

Однако, если клиент слишком долго реагирует, сервер увидит это как скрытый отказ и предложит часть работы кому-то другому.

Вот выдержка конечной точки контроллера на сервере, где клиент может опубликовать его принятие текущего раунда

public HttpResponseMessage PostAcceptRound(PersonData accepter){
    Round currentRound = repo.GetCurrentRound();
    if(currentRound.offeredTo.id == accepter.id){
        repo.RoundAccepted(currentRound.id);
        return Request.CreateResponse<String>(HttpStatusCode.OK, "Round has been accepted");
    }
    else{
        //return appropriate response
    }
}

Мой вопрос: каков соответствующий ответ для клиента, который слишком долго принимает?

Моя первоначальная реакция заключалась в том, что я должен отправить сообщение об ошибке "BadRequest". Тем не менее, это не так, как если кто-то отказывается от позднего, это плохо сформированный запрос или что-то неожиданное. Действительно, кажется, что принятие слишком поздно будет ситуацией, которая часто случается с использованием этого приложения.

  • 1
    Может быть CreateResponse (HttpStatusCode.RequestTimeout) будет работать для вас? Это означает, что клиент не был достигнут или занят другими вещами. Давайте делегировать единицу работы другому клинту
  • 0
    Подождите, подождите ... Сервер отправляет push клиенту? Вы уверены, что HTTP - это путь?
Теги:
http
asp.net-web-api
client-server

1 ответ

1
Лучший ответ

408 = "Тайм-аут запроса" мне кажется наиболее подходящим.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню