Hi Amirtpal,
a) You would use WebSockets for this purpose. I can't give a summary of how they work here - there's plenty of documentation out there about them - but they tunnel over HTTP(S) and provide bidirectional communication.
b) If the firewall is just limiting ports, then yes. If there's a weird proxy that's capturing all traffic and redirecting it, though, it may block WebSockets.
c) I'm not sure what sort of producer and consumer you're talking about, but if you read the documentation you'll see that we call the code that handles messages on channels consumers. Producer makes no sense as a standalone as it's a bidirectional thing not a work queue.
d) There are some examples at
https://github.com/andrewgodwin/channels-examples, but they're not something you can just drop into production; channels is a framework for you to build an application on top of, you'll have to write your own Python and Javascript around it.
Andrew