Как я знаю, КОГДА закрыть HTTP 1.1 Активное Соединение?

Используйте регулярное выражение, чтобы заменить недопустимые восьмеричные escape-последовательности пробелом:

var octalEscapePat = regexp.MustCompile(`\\[0-7]{3}`)

func fix(src string) string {
    return octalEscapePat.ReplaceAllString(src, " ")
}

Вы также можете проанализировать восьмеричное значение и преобразовать в допустимую escape-последовательность JSON:

func fix(src string) string {
    return octalEscapePat.ReplaceAllStringFunc(src, func(s string) string {
        // Parse octal value
        n, _ := strconv.ParseInt(s[1:], 8, 0)
        // Convert to string and marshal to JSON to handle any escaping
        b, _ := json.Marshal(string(n))
        // return string with surrounding quotes removed
        return string(b[1 : len(b)-1])
    })
}

[115 С \ M можно обращаться аналогичным образом.

https://play.golang.org/p/-gtxrvnBSrx

8
задан Bret 5 June 2013 в 14:01
поделиться

4 ответа

Если Вы создаете свой сервер для соответствия стандарту, то у Вас есть большая информация уже для руководства Вас сюда.

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

Более длинно-обветренным способом практический раздел соображений документа HTTP/1.1 имеет некоторое руководство для Вас:

"Серверы будут обычно иметь некоторое значение тайм-аута, вне которого они больше не будут поддерживать неактивное соединение. Прокси-серверы могли бы сделать это более высоким значением, так как вероятно, что клиент будет устанавливать больше связей через тот же сервер. Использование постоянных соединений не помещает требований к длине (или существование) этого тайм-аута или для клиента или для сервера".

или

"Когда клиент или сервер желают к тайм-ауту, он ДОЛЖЕН выпустить корректное завершение на транспортном соединении. Клиенты и серверы ДОЛЖНЫ и постоянно наблюдать за другой стороной транспорта близко и отвечать на него как соответствующий. Если клиент или сервер не обнаруживают завершение другой стороны быстро, это могло бы вызвать ненужный дренаж ресурса в сети".

8
ответ дан 5 December 2019 в 13:02
поделиться

Необходимо считать контакт RFCs с функцией Keep-Alive. Иначе Вы могли бы закончить с сервером, который не работает как ожидалось.

Как [Stephen] уже указал, сервер свободен закрыть соединение каждый раз, когда это желает (хорошо, не посреди пары запроса/ответа хотя). Так же для клиента. Любое другое решение позволило бы серверу или клиенту выполнять DoS на другой стороне.

Править: Взгляните на заголовок Соединения. Клиент (и сервер) может запросить корректное закрытие соединения с помощью заголовка. Например, Connection: close в запросе запрос к серверу для закрытия соединения после того, как это отправит ответ.

1
ответ дан 5 December 2019 в 13:02
поделиться

Позволяет видят, как stackoverflow обрабатывает этот очень неясный вопрос - отвечает, для которого, на Google, испачканы в технических спецификациях и затеняют язык.

Я просто поместил, Когда я должен закрыть соединение HTTP 1.1? в Google и третий хит был HTTP, Сделанный Действительно Легкий. В оглавлении существует ссылка на раздел под названием Постоянные соединения и "Соединение: закройте" Заголовок. Этот раздел является тремя абзацами долго, использует очень простой язык и говорит Вам точно, что Вы хотите знать.

Я хочу просто-английский ответ для non-C программиста :)

Со всем должным уважением программирование является технической деятельностью, где детали имеют значение много. Чтение технической документации является абсолютно необходимым навыком. Доверие "простым английским" сторонним интерпретациям спецификаций только приведет к Вам делающий плохое задание.

3
ответ дан 5 December 2019 в 13:02
поделиться

Вы закрываете его каждый раз, когда Вы хотели бы. Заголовок указывает, что клиент предпочел бы, чтобы Вы оставили соединение открытым, но это не требует, чтобы сервер соответствовал. Большинство серверов оставляет это открытым в течение приблизительно 5-10 секунд, некоторые не обращают внимание на него вообще.

1
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: