What about server functions calling the browser (server push)?

The original and still prevalent interaction between browsers and web servers is a (more or less) stateless request from the browser followed by a response from the server, and that's it. With the addition of XMLHttpRequest (or similar mechanisms) to allow request-response communications without refreshing the page, Remote Procedure Calls (RPC) are very natural to implement, and now Jaxer makes them downright trivial: a client-side function can simply call a server-side function that's been designated with the "proxy" flag, as easily as calling another client-side function. Since in many cases the user interface is driven by user interaction events on the client, it's often sufficient to have client-server communications initiated from the client.

But there is also value in some cases for server-initiated communications, e.g. when the server has updated data, say in a collaborative application where the server coordinates interactions between users. Such "server push" functionality can be achieved by polling the server for new information, or by relying on long-lived HTTP connections between the browser and the web server ("Comet") . Jaxer easily supports polling models (e.g. see the Jaxer sample "Chat" which uses a very simple polling loop), while support for Comet is being investigated.