Skip to main content

What is best choice for realtime web app development?


I have decided to make a new web app.



The web app would be high concurrency and using Socket.io. to implement streaming data in realtime.



I have implemented socket.io with PHP before.



Every moves in website will be Ajax processed and its behavior and actions will interact with server by socket.io.



I'm familiar with PHP and Apache2 but I have heard that those two are not efficient and good enough for realtime web app.



Socket.io is a Node.js module and I know that it is super-fast and highly scalable but I'm so curious that it changes version too rapidly (0.6.x - stable version came out recently) to adapt it as production one.



I'm considering 4 choices and I don't know which one would fit to me.



  • PHP + Apache2 + mongoDB

  • PHP-mpm + nginx + FastCGI + mongoDB

  • node.js + mongoDB

  • nginx (as proxy) + node.js + mongoDB (I know that nginx does not support HTTP 1.1, so socket.io would not work, a critical problem)



or any other recommendation on choosing architecture?


Source: Tips4allCCNA FINAL EXAM

Comments

  1. I would use the following configuration:


    Nginx for serving static files ( http://engineering.linkedin.com/nodejs/blazing-fast-nodejs-10-performance-tips-linkedin-mobile << read the section about serving static files)
    Node.js under Nginx for dynamic regular stuff (except realtime Socket.IO) - Ryan Dahl (Node.js creator) even recommended this
    Socket.IO for realtime, since it abstracts away all the websocket logic, has some advanced (and really needed) features (like heartbeats for example). Socket.IO even takes care of browsers that don't support native WS, by using Flash-WS or long-polling etc. (your stuff would even work on IE6 lol)
    Since you know Nginx doesn't play well with HTTP 1.1, WebSockets (allthough I've heard there are some plugins for that), you could use something else for that: Node.js directly or some other proxy ( node-http-proxy or bouncy are 2 Node solutions for proxying).

    ReplyDelete
  2. First recommendation is "define 'realtime'". Do you mean the data seen by the viewer can be as much as 5 seconds behind? 1 minute? 5 minutes? Or on the other side, 0.1 seconds? (nearly impossible to guarantee in a web app and hard in an internet app.) 0.01 seconds (now you're pushing the limits of message propagation on the internet.)

    Also, how many concurrent users? 10, 100, 10,000?

    ReplyDelete
  3. I suggest to use lighttpd. I think it's also very stable but I don't know about the other programs. Maybe you want to rent a loadbalancer and focus on the usuability and marketing instead? Lighttpd and fast-cgi is better then apache.

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex