Как перезагрузить сервис на Go так, чтобы сохранить текущие WS соединения?
есть такая штука как https://golang.org/pkg/plugin/
не знаю подойдет ли, но если подойдет - то разделить приложение на 2 части - одна - веб-сервер, вторая - вся логика, которая подключается как плагин. Вот его, насколько я понял, можно менять по-горячему
Если не подойдет, и вопрос сохранения соединений критичен, то все-равно разделить на две части, но они между собой должны общаться по какому-то IPC каналу (tcp/unix/whaterver). Это позволит вторую часть перезагружать не трогая первую.
В чём проблема сделать на клиенте переподключение при обрыве? В любом случае это надо делать на случай проблем подключения к интернету у клиента.
Если совсем-совсем нельзя даунтайм иметь, можете сначала запустить новый сервис, перевести у клиентов все подключения на него и только потом гасить старый. Правда, ИМХО, это сильно более запарно чем автореконнект на клиенте.