1 轮询
就是不断的发送普通的http请求和相应的不断接收http响应,直到响应是自己想要的为止。轮询只需要客户端不断的发送请求,不需要服务器端做特殊的事情。
2 长轮询
这个需要服务器和客户端两端的支持,首先,客户端发起长轮询之后就应该等待服务器端的响应,其次服务器端收到长轮询请求之后,如果没有客户端想要的消息就应该挂起该任务等待消息的到来,最后,无论是客户端还是服务器端都不能关闭socket,而要保持底层的socket处于连接状态。jetty的continuation是支持长轮询的。
3 websocket
http协议本身就是请求响应模式的,服务器端不能主动向客户端发送消息。websocket结束了这种限制,它支持双向通信,客户端和服务器端可以随时相互发送消息。