I’m pretty new to web development, so excuse my ignorance.
What I’d like to know is if there’s a way to have the server broadcast a message to clients. An example of this would be a client page that has a newsfeed, and every time a new story comes in to the server, the server sends that information out to the client and the client updates its page’s newsfeed. I don’t want the client to constantly be polling the server every few seconds, asking “hey, is there a new story now? what about now? what about now???” I want the client to be doing its own thing, and then be interrupted by a message from the server.
Is there a way to do this?
For newer browsers, you can use web sockets to open a continuous connection to a server and then client/server can send each other messages whenever they want.
For older browsers, the way this is typically done is that the client has to “poll” the server to ask the server on some regular schedule if the server has any new messages for it. The server usually cannot connect directly to the client because of firewalls, local security settings, unknown location, etc… so the client has to connect to the server. Polling can either be of the regular variety, poll every 60 seconds with an ajax call to ask if there’s anything new or it can be more of a long poll where the client asks if there is something new and, if there is something new, the server returns right away with that data. But, there’s nothing new, the server hangs onto the polling request for some time period waiting to see if there is something new. Eventually, the server will either return that it has nothing or return with a new message if there is one. When the client gets the response, it starts the “long poll” sequence over again. Comet is an example of the “long poll” in a library form that makes it easier to implement.