Most of centralized exchanges support websocket based APIs to stream data to users efficiently. Can we implement the same feature using EOS.IO platform?
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 on the frontend. In this setup, we can have our backend talk to the two blockchains in the background and store key information in our Firebase Realtime Database, than React clients (web, mobile, desktop) can subscribe to and receive realtime events. Such as wallet balances, transaction history, etc.
I think that's the cleanest way of doing things, without touching the actual EOS core source code and it seems to be working well for us so far. Definitely stay tuned for updates on that though :)
If you want a websockets API that streams current blocks, but also past blocks, and allows you to filter actions, but also table changes.. check out https://dfuse.io .. just released!