You can create a nodejs app (for example) that watches incoming blocks from EOSIO. Probably would be a good idea to create a 'cache' database for more streamlined "reading" not to query the eosio node every time.
Your nodejs app can have socket connections available for your end users.
That's a really good question. Blockchain development is awesome but we have to find ways to build great experiences around it. We're asking the same type of questions as we're building our Carmel product (carmel.io) and the way we're implementing this is by building a hybrid architecture, using EOS, Ethereum, AWS Lambda and Firebase on the backend and React ...
As long as the EOS nodes are open source, we can always create plugins for it in C++. So I think it's a good idea to create a plugin that enables the running node to serve websockets connections in a pub/sub fashion.
(Not sure EOS Core team already have plans or are building that)
The EOS smart contracts do not have file system. Thus, you cannot use file system functions.
Practical thinking for the homework:
Where would the file reside as the code is executed on a block producer? The block producers cannot access your hard disk.