前言
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。而在http与tcp之间有一层叫socket的编程接口。
Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。
socket一般用于比较即时的通信和实时性较高的情况,最常见的就是QQ,微信等聊天和实时推送。
一般做开发的都要了解一下socket,用socket编写tcp也蛮多的。比如用Go写一个web API与app(安卓和IOS)通讯。一般会用socket实现,而不是用http。再在go api前面加一个nginx做反代。