Como um bom SAPeiro sei bem do que você está falando.
Não sei se você conhece por baixo dos panos esse processo no SAP, mas ele tem uma função de ENQUEUE e DEQUEUE que basicamente faz o lock e unlock de uma chave que você passa, podendo ser um número de pedido, funcionário e etc. e a tela sempre tenta fazer um ENQUEUE mas se alguém fez antes ele devolve que está bloqueado.
Com websocket isso fincionará bem e uma tabela auxiliar para armazenar sase lock.
Em resposta a Apenas um usuário por view, como você programaria isso?
1