How does the "plumbing" of real-time (node/socket.io) work?

I'm currently building a real-time web application that utilizes the MEAN stack (Mongo,Express,Angular,Node). My question relates to how Node (and more specifically Socket.io) work in a real-time app which makes calls to an API (in this case Instagram).

I'm subscribing to several locations (lat/lon coordinates) with the Instagram API. I want my web app to automatically add photos as they are taken (and geo-tagged) around these locations.

How I THINK this will work:

  • Subscribe to several locations through the Instagram API
  • Instagram sends me a GET request to my callback URL when data at API endpoint changes
  • Fire off a GET request TO Instagram in response, based on which endpoint changed
  • Save the new photo(s) to Mongo database using my own API
  • Emit an event from server to client using Socket.io, containing new photo(s) data
  • 'Capture' this event with a Socket.io listener on client side and display new photo(s)

Does this seem reasonable at a detailed level or am I missing (even some tiny) steps?

  1. Emit an event from server to client using Socket.io
  2. 'Capture' this event with a Socket.io listener on client side
  3. Fire off a GET request to my API to pull the new photo(s) from Mongo database

This can be reduced to a single step:

  1. Emit an event from server and send the photo as data-uri.

You may need to watch out for the amount of data that can be sent via sockets.