Пусть сервер присылает не дату, а количество секунд до истечения времени.
А на клиенте запустите setInterval каждые 1000мс. (1с)
Профит(почти).
P.s. почему почти:
1) коллбэк сработает через 1000мс только если поток документа не заблокирован другими тяжёлыми синхронными вычислениями.
2) браузеры, хром в частности, могут оптимизировать тики таймеров, если пользователь покинул вкладку(перешёл на другую или свернул браузер). Таким образом, он будет тикать не каждые 1000мс, а реже. Я такого не встречал, но, возможно, вообще не будет тикать.
По моему опыту - в рамках нескольких минут, если свернуть браузер, таймер начинал отставать на несколько секунд.