💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 2. socket和http的区别 ### socket连接: socket不属于协议范畴,而是一个调用接口(API),是对TCP/IP协议的封装。实现服务器与客户端之间的物理连接,并进行数据传输。Socket处于网络协议的传输层,主要有TCP/UDP两个协议。 socket连接是长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如:服务器端或客户端主机宕机了、网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息。 socket传输的数据可自定义,为字节级,数据量小,可以加密,数据安全性高,适合Client/Server之间信息实时交互。 ### http连接: HTTP是基于TCP/IP协议的应用层协议,定义的是传输数据的内容的规范。 HTTP是基于请求-响应形式并且是短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉。 HTTP是无状态的协议,针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。 HTTP的传输速度慢,数据包大,数据传输安全性差,如实现实时交互,服务器性能压力大。 ## 3. socket和http的应用场景有哪些 socket一般用于比较即时的通信和实时性较高的情况,比如推送,聊天,保持心跳长连接等; http一般用于实时性要求不那么高的情况,比如信息反馈,图片上传,获取新闻信息等。 某些场合使用http不使用socket的原因是socket一旦连接上了,就一直保持连接,就会造成阻塞IO,与此相对的的,还有非阻塞IO。 阻塞IO是指客户端请求服务器端,服务器端进行处理后,返回值给客户端。但当客户端太多、同时并发请求的时候,服务器端处理不过来,就会卡,因此提出了非阻塞IO,客户端请求服务器端,服务器端有一些监听器负责接受请求,接受好了,就告诉客户端已经接受好了,处理完后把数据发给客户端。 ![](https://box.kancloud.cn/22736cd5da5cf0864f197b389b9af3fe_542x476.png)