Web tier: servlets, JSP, Web frameworks: Query on Web Push technology
- Posted by: sourav mazumder
- Posted on: January 02 2006 05:10 EST
This is on option of using push technology for sending alert messages from a server to user's browsers.
The push will need to be initiated by an alert server or streaming engine, which will keep pushing data (alerts) to the users's browsers. Now the key thing is not just the instant alert but the use of streaming engine as a central repository for publishing all types of messages from all type of applications.
In that context I'll like to know
1. The pros and cons -
I can see some pros and cons for it -
- If you use push, you need to have persistent connection with the browsers, throwing the scalability out of orbit (considering our requirement of 30,000 logged in users to start with)
- If some kind of pull with auto refresh is used with frequency set at a very low interval, it will create a lot of http traffic
2. What are the relevant technologies avaialble in Java/J2EE for this -
a) How AJAX an be used ?
b) I was going through pushlet concept in one site. But still not sure how reliable that concept.
In overall, looking for thought points on the high level philosophy (whether it is at all recommended) and also the implementation option of the same in Java/J2EE.
Any input/pointer would be really helpful.
See this document for details of an open source Ajax solution together with details of how it compares to pushlets.
With the new features in ActiveMQ and Jetty threads are used efficiently and the distribution of messages is scalable and efficient.
The only real issue to scalability is how many servers/processes do you require to keep open sockets (using HTTP1.1 keep-alive) to users browsers. (The sockets can be closed & reopened via Ajax if required but it probably adds lower overhead to your infrastructure to leave them open).
The number of available sockets you can use per process is an operating system specific feature; on Linux you can recompile your kernel with a high value per process; if its say 1000 then you can just run lots of JVMs with a few hundred clients per JVM. On new Solaris machines Sun claims to support > 10,000 sockets per JVM so YMMV.