I want to do something very similar to Google Doc\'s live updating - where all users can \"immediately\" see the actions of the other users in the doc.
To achieve this,
A Ajax approach is one way to go. You could implement it like the chat applications. The actual way will depend on the data being view. In short
Whether it will be performance intensive or not will depend largely on how to structure everything.
Your other option is web sockets. Haven't used it personally but if you have control over what browser your users will use, you could give it a shot. It allows the server to push data to the browser. Some Links: Web Sockets JS and Web Sockets in Firefox
Check out google mobwrite. It's a drop-in library that enables collaborative editing of html forms via operational transformation.
Getting events pushed back from the server is the easy part, there are many ways to do it. Ensuring that the state is consistent across all clients, that's the hard part. That's where the operational transformation algorithm comes in.
Another alternative is Orbited:
Orbited provides a pure JavaScript/HTML socket in the browser. It is a web router and firewall that allows you to integrate web applications with arbitrary back-end systems. You can implement any network protocol in the browser—without resorting to plugins.
Orbited is an HTTP daemon that is optimized for long-lasting comet connections. It is designed to be easily integrated with new and existing applications. Orbited allows you to write real-time web applications, such as a chat room or instant messaging client, without using any external plugins like Flash or Java.
You could also have a look at ShareJS a Operational Transform libary and Derby which is a framework built on sharejs. They both have node.js backends - sharejs was written by a Google Wave engineer.
Also take a look at pubsubhubbub - http://code.google.com/p/pubsubhubbub/ Watch the video for a short intro.