TL DR
What structure can I use to store 100% application logic on the server, providing RIA interactivity?
Explanation
In the 90s, it was possible to create a 100% server application with regular PHP. But then the requirements for interactivity on the page increased, and more and more application logic was transferred to client javascript. Today, thanks to the websocket and the fully dynamic DOM, server applications can again be created to meet all the interactivity requirements of the page. All that is needed on the client is a shared javascript library that synchronizes the DOM with the server via websocket.
Although I believe that this approach to web development has its merits , I do not want to discuss the pros and cons of this technique here.
My question is about modern frameworks available by the end of 2014 that support this style of development. The experimental framework is also good as far as their architecture is clear enough. I do not need a list of styles for existing frameworks. I would like to see some frameworks that implement such a software architecture or, if there is no such structure, I would like to learn about those that are closest to the ideal.
My own research so far shows that Meteor is on the right track, but still encourages too much javascript for the client application, and it connects the server platform with the client platform (i.e. javascript). I read about the Trello architecture , which greatly reduces the client processor to the template, but the templates and their associated template / binding libraries are related to the fact that I would like to return to the server side. Amazon AppStream will support all UI logic, but it is prohibitively expensive for web development, especially when users leave applications sitting in the background.
Update: All answers are still focused on Meteor. I removed the Meteor tag because it might be misleading. I mentioned Meteor because the Meteor view showed that I have a choice whether I want to run the code on the server side or on the client side. It is now clear that Meteor will not transmit any user interface over the cable, just data. Thus, the client requires half the application, at least in the form of templates.
Update 2: I found Remote Events for XML (REX) , a protocol that can be used to remotely control client-side DOM from a server application. There is no clear way to send user actions (clicks, changes) back to the server, but perhaps they can be defined as extension events in REX, which is allowed by the specification. However, this is a protocol. No real software that I could use.
Update 3: I have one thing to make clear. Simply accepting server templates and translating them to client templates, which are then executed on the client, are not taken into account as a 100% server-side application logic. Although this framework allows me to use the server-side API, they will inevitably burden the client and expose most of the application code. I am looking for something that only sends the rendered content (and the general event hooks) to the client.
In addition, with regard to widgets / controls, the framework may allow client code to handle random cases (new low-level widgets), but it should not require implementation on the client side for typical application logic (high-level templates and widgets).