in the last weeks I have built a small notification system using HTML5 Websockets and node.js with socket.io. There are still some things that I haven´t solved, yet.
I have read that realtime notification using node.js should be the best performance solution vs long polling etc because of non blocking i/o operations.
Now assume we have to notify friends of this user. Something like "I have bought a new iphone". How do I teach node.js to realtime notify specific user 1:n? Till know I have only got sending and receiving message 1-1 communication. This means I have to go check against facebook api friendlist first and find out which facebook_id is connected with which socket_id somehow. Then check the users privacy settings, if he would like to receive notifications and then send and save it into the database.
So to me this somehow seems not to be the most effective solution...
At the moment I would use mongo-db native driver for node.js and have db operations done by serversided javascript. I still need to implement facebooks javascript sdk to get the friendslist, but I would have trouble with the users privacy settings. Doesn´t this destroy all the advantages of non-blocking I/O?
How do you actually solve this. To me, it seems very complex.
Thank you very much.
You shouldn't go to Facebook to check friends list and such.. you should cache them, i assume the users are logged in if so the solution seems to be very easy.
btw, redis is a lot faster.
Edit: if you are worried that the user data won't be updated and that's why you do not cache you should check Real-time Updates.