Once we can produce off-chain transactions client side, your approach would be a viable solution. Currently there are some pain points, namely regarding producing off-chain transactions:
contract calls must be executed client side so the client must be able to run the FATE VM. This is doable but hard.
contract calls can use on-chain data in their logic, so the client must have the full on-chain state tree or a reasonably fast way to fetch data from on-chain state tree and feed it to the contract execution context. This also is doable but possibly harder as the on-chain state tree is big and also - rapidly changing.
If you want just to ditch the WebSocket between A and FSM A, you can read my response in the other thread: