1、Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
2、WebSocket 是 HTML5 一种新的协议,主要为了解决 HTTP 协议无法解决长链接的所打的一个大补丁。
Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。
socket连接:socket连接就是我们所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉。
HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。WebSocket 通过第一个 HTTP request 建立了 TCP 连接(三次握手)之后,之后的交换数据都不需要再发 HTTP request了。
WebSocket与HTTP的关系
相同点
1. 都是一样基于TCP的,都是可靠性传输协议。
2. 都是应用层协议。
不同点
1. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。
2. WebSocket是需要3次握手进行建立连接的。
联系
WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。
WebSocket与Socket的关系
Socket是TCP/IP/UDP抽象出来的API接口,WebSocket是应用层协议。

HTML5与WebSocket的关系
WebSocket API 是 HTML5 标准的一部分, 但这并不代表 WebSocket 一定要用在 HTML 中,或者只能在基于浏览器的应用程序中使用。
实际上,许多语言、框架和服务器都提供了 WebSocket 支持,例如:
* 基于 C 的 libwebsocket.org
* 基于 Node.js 的 Socket.io
* 基于 Python 的 ws4py
* 基于 C++ 的 WebSocket++
* Apache 对 WebSocket 的支持: Apache Module mod_proxy_wstunnel
* Nginx 对 WebSockets 的支持: NGINX as a WebSockets Proxy 、 NGINX Announces Support for WebSocket Protocol 、WebSocket proxying