You have several options to do that, when using products like BlazeDS, LCDS, Granite, Red5 etc. Note that I'm aware only about LCDS to include all the options a) b) c) d) listed below(if I'm wrong maybe someone one can add a comment).
a)RMTP over full duplex sockets
b)Streaming
c)Long polling
d)Short polling
for b) c) d) you can choose between blocking IO and non blocking IO. a) is using non blocking IO.
All of them have advantages and disadvantages. For example Streaming is implemented with 2 connections - one is kept open for ever and the server will push messages with ti and the second one is open when the client wants to send a message. However some proxy can decide that it will not allow an open connection more than 20 seconds and in this case streaming is out of the question.
More details can be found on Damon blog. At first glance you can be find too much information on that link, but its not the case. In fact you need to read many more articles(or books, like Livecycle Developer Guide). It is not an easy subject and you need to understand in detail all the aspects if you need to build a professional solution.
There is another option, to build your own custom protocol using Flash sockets with fallback to another type of channel but the development type will be significant.
You can also take a look on servers like ElectroServer or SmartFox from what I know they are specially built for the gaming industry.