Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a realtime notification like facebook? [closed]

I am trying to make a realtime notification just like facebook.After learning and searching alot i m very confuse please explain me what is right and what is wrong..


Please make sure that the site may would have same number of users as Facebook

  • We can make Realtime notification with long polling or not? IF yes what is the advantages, disadvantages and limitations.
  • we can make Realtime notifiaction with websockets or not?Please mind the number of users can be same as facebook .If yes what is the advantages, disadvantages and limitations.
  • If there is any other method please explain.

Confusion

How Far I learn in web and found that Websocket is good but there is a limitation(Max 5K) in number of open connection which means that at a time the max number of user is just 5K,this is very less than facebook's number of users.. if I m wrong please explain.

like image 635
Anand Singh Avatar asked Jan 13 '14 06:01

Anand Singh


People also ask

How does Facebook notification system work?

Notifications are updates about activity on Facebook. You can go to your notifications settings to change what you're notified about and how you're notified. The types of notifications you may receive depends on what platform you're using. Learn more about notification types.

What is notify in Facebook live?

! notify: Notifies you when the streamer goes live and follows the streamer for you.

Does Facebook have push notifications?

When you've downloaded the Facebook app, we may send you two types of mobile notifications: Push notifications: sent when you're not actively using Facebook (example: on your device's lockscreen). In-app notifications: sent when you're using Facebook.


1 Answers

You're wrong, a websocket based solution is not limited to 5K concurrent connections.

According to the Facebook Newsroom they have about 727 million daily active users on average in September 2013 or about 504k unique users that hit the Facebook page every minute. Given an average visit time of 18 minutes (researched by statisticbrain.com) their notification infrastructure must be able to serve about 9 million (18*504k) concurrent TCP connections 24/7. Although this number is a very far approximation it gives a far idea of what they are dealing with and what you have to deal with if you are going to build such a system.

You can use long polling as well as websockets to build your realtime notification system. In both cases you face similar problems which are related to your OS (Explanations are for a Unix based system):

  • limitation of ports, one tcp listener socket can only accept 2^16 connections on the same IP/Port it is listening, so you'll need to listen on multiple ports and/or multiple IP adresses.
  • memory, every open connection uses at least one file descriptor

Read more about the limitations in What is the theoretical maximum number of open TCP connections that a modern Linux box can have

Long-polling vs. Websockets:

Every poll in your long-poll solution requires a new HTTP request, which requires more bandwidth than what is needed to keep a websocket connection alive. Moreover the notification is returned as a HTTP response resulting in a new poll request. Although the websocket solution can be more efficient in terms of bandwidth and consumption of system resources, it has a major drawback: lack of browser support.

Depending on the stats at hand, a websocket-only solution ignores about 20-40% of your visitors (stats from statscounter.com). For this reason different server libraries were developed that abstract the concept of a connection away from the 'physical' underlying transport model. As a result more modern browsers create the connection using websockets and older browsers fall back to an alternative transport such as e.g. HTTP long polling, jsonp polling, or flash. Prominent examples of such libraries are Sock.js and Socket.io.

like image 122
Andre Avatar answered Sep 21 '22 05:09

Andre