да, авто-ответ понгом должен, а вот пинги - не должен (на усмотрение). АФАИК проще сделать - нету данных по tcp столько-то времени - закрываем. Кроме того обычно клиент "более заинтересован" в поддержании коннекшена, поэтому он и пингует. Хотя если вывернутая наизнанку схема, т.е. клиент "подписывается" на события от сервера и просто их получает, то и в таком случае клиент(!) должен пинговать сервер о том что он живой, а не сервер.
Как пример я делал как-то для камеры по GigE протоколу, и там фреймы по UDP от камеры приходили. И там да, клиент должен камеру пинговать. По смыслу такой подход и логично для сервера : чем ставить ещё N таймеров на N клиентов дешевле, обычно, каждому клиенту поставить у себя таймер.
Так что с цитатой с SO не согласен.