通信协议定义了客户端和服务器端互相通信需要遵守的规则和约定。以下是五种常用通信协议的理解。
1. HTTP
1.1 HTTP pull
解决问题:普通的通信方式
原理:客户端发送消息给服务端,服务端在连接关闭后返回一个消息。
1.2 HTTP push
解决问题:服务端可以继续给客户端发送新数据
原理:客户端发起一个请求,服务端回应后,连接不断开,所以服务端可以不停地把新数据发送给客户端。
2. Ajax轮询(Ajax polling: Asynchronous JavaScript and XML) XML在这里也可以是其他数据,比如:JSON
解决问题:不一直占用一个连接
原理:客户端隔个几秒就发送一次请求,询问服务器是否有新信息。
3. Long polling
解决问题:这样就减少了客户端和服务端不断频繁连接和传递数据的过程,并且不会消耗服务端太多资源。
原理:客户端发起请求,如果服务端的数据没有发生变更,那么就hold住请求,直到服务端的数据发生了变更,或者达到了一定的时间就会返回。
4. Server sent events
解决问题:服务端在短时间内收到大量更新需要给客户端发送。
原理:服务端可以给客户端自动发送更新的数据或者事件,但是客户端必须订阅这些事件,也就是说先要建立起来初步的连接。
5. Websockets
解决问题:Websockets提供了双向的通信。(Websockets和HTTP互相兼容,区别是HTTP则只能单向通信)
原理:客户端和服务端可以在同一时间,同一连接上,互相收发消息。
6. 消息队列(Message queues)
解决问题:解决多个客户端请求统一资源的问题。
原理:消息队列允许服务之间不同步的交流。它有两个组件分别是:创建消息或者发送请求的producer,处理请求的consumer。在消息队列中consumer的延迟不会影响producer,因为producer把消息发送到队列后,又继续去处理别等任务去了。消息队列保证了consumer可以取到他们的消息。
Reference:
https://iq.opengenus.org/types-of-client-server-communication/
网友评论