The only problem is that the whole Web (that is, HTTP) is based on pure client-server model, which is very, very limiting. Being just fine in many other cases, it presents the number of problems for Web chats, specifically. You mentioned just two of them.
For some background, please see:
http://en.wikipedia.org/wiki/Client-server_model[
^],
http://en.wikipedia.org/wiki/Pull_technology[
^],
http://en.wikipedia.org/wiki/Server_push[
^].
As the
server push explained in the article referenced above is not supported generally, you cannot immediately push any piece of data to the client. Everything happens on the HTTP request from the client. That said, if the client has to get the notifications as they appear (in your case, this is the notification like "File [filename] is delivered by [member]" or "[member] is typing..."), this client should send an HTTP request periodically, to get some notification information. It can be done in JavaScript timer handler and Ajax, or the whole page could be periodically reloaded (such chats exist, but this is a
very sloppy way).
For further detail, see, for example, this tutorial:
http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=9[
^].
You will be able to find a lot of available projects or articles:
http://bit.ly/16t6Xj6[
^],
http://www.codeproject.com/search.aspx?doctypeid=1&q=ASP.NET+chat[
^].
—SA