A hundred and twenty seconds of patience
The problem is mundane and it poisons every real-time app: a socket closing doesn't mean the person left.
They might be in a tunnel. They might have locked their phone for ten seconds. The system might have decided to suspend the app while they read a text.
The seat stays warm
When a socket drops, we do nothing for a hundred and twenty seconds. The seat stays taken, the name stays reserved, no system message goes out. If the app comes back within that window, the person finds their bench, their messages and their name, and nobody else saw a thing.
Beyond it, we announce the departure: "Firmin left." The seat frees up, and if the bench empties completely it's dissolved along with its messages.
Two minutes is arbitrary. It's long enough for a Brussels metro tunnel and a trip to the loo, and short enough that a bench doesn't sit occupied by ghosts all evening.