Comments 5
У вас фактически инициатор выступает центральным сервером. Его временное падение фактически остановит коллаборацию для всех. Я бы предложил сделать некоторую адресную книгу, куда клиенты могли писать свои оферы. Как только один офер захвачен, создаётся новый. Таким образом любой клиент всегда будет готов принять соединение. Ну а далее возможны разные конфигурации: от переходящего лидера, до все со всеми.
Есть библиотека libp2p для JS/Go/Rust в которой это уже реализовано, и много чего еще. Поднимается нода на сервере (или несколько) и на каждом клиенте. Соединяются с сервером через tcp/websocket/webtransport и получают адреса уже подключившихся клиентов - с каждым можно открыть webrtc соединение. После этого про сервер можно забыть, адреса новых клиентов будут распространяться через webrtc. Можно строить сеть только для открытого документа, а можно сразу для всех клиентов приложения, а поверх нее еще одну сеть для документа. А сервер можно и в качестве TURN использовать, только там это называется Relay.
Самостоятельно это писать можно очень долго.
WebRTC. Как установить p2p соединение между браузерами