WebSocket是通过TCP连接的通信协议,它提供了点对点通信系统。建立在WebSocket上的基本思想是套接字,或者可以说WebSocket协议是套接字的扩展。协议的标准化使人们可以使用它,它非常有效,可用于从浏览器向服务器传输数据。REST,即表示状态转移,定义了一组用于创建Web服务的约束。在Web应用程序中使用HTTP创建REST端点是一种体系结构样式。正在调用RESTful端点,这将调用本质上也是RESTful的API并给出HTTP响应。

WebSocket
WebSocket协议可以克服HTTP提出的障碍,就像它可以提供全双工通信一样。该协议于2011年实现了标准化,相关的WebSocket API也已由W3C进行了标准化。同时,WebSocket不会破坏Web的安全系统。浏览器可以使用其中的嵌入式开发人员工具检查所有WebSocket握手。
WebSocket代表客户端和服务器之间双向通信的标准。使用这种方法,开发人员可以提出一个在所有平台上都能一致工作的功能。WebSocket表示单个TCP套接字连接,因此消除了连接限制的问题。
跨域的通信可以在连接握手中得到有效处理。当涉及支持实时平台时,类似Pusher的服务可以轻松利用这种连接,实时平台本质上可以大规模扩展,并且可以在任何网站,Web,桌面或移动应用程序上高效使用。第一次,它在HTML5规范中被称为TCP连接。所有浏览器均实现WebSocket协议的安全版本,无论其是Firefox,Google chrome等。
REST
REST的操作是标准的,并且本质上是无状态的,这实际上使任何具有REST功能,快速执行,可靠且同时具有增长能力的系统成为可能。请求将使用HTTP动词(即Get,Post,Put,Delete)从客户端发出。他们对期望的一组操作做出反应,接收数据,更新数据或可以根据动词删除数据。
REST可以作为设计请求API的标准方法之一。如果用户在任何Web应用程序上的交互不太频繁,则在该情况下使用HTTP是合适的。在空闲时间,关闭的端口套接字可以节省资源。
借助REST体系结构,客户端和服务器可以独立实现,而无需彼此了解。此客户端/服务器范例具有很多好处,可以随时更改客户端代码,而不会影响服务器。具有REST接口的不同客户端可以同时访问端点,并收到相同的响应。
另外,另一个特性是无状态。服务器不需要知道客户端处于哪个状态,客户端也是如此。可以通过使用资源而不是命令来获得此无状态属性。因此,接口的实现变得无关紧要,因为REST系统通过对资源的标准操作相互通信。

WebSocket和REST之间的主要区别
两者都是市场上流行的选择。让我们讨论一些主要区别:

WebSocket是基于套接字和端口的概念的低级协议,它们是基础的传输机制,而REST基于CRUD操作。
WebSocket要求使用IP地址和端口详细信息,这是任何应用程序的下层详细信息,而RESTful应用程序需要基于动词和基于HTTP的设计操作。
WebSocket本质上是双向的,即从客户端到服务器的双向操作都是可能的,而REST遵循单向方法。
WebSocket方法是实时可伸缩应用程序的理想选择,而REST更适合于有大量请求的情况。
WebSocket是一种有状态协议,而REST是基于无状态协议的,即客户端不需要了解服务器,并且服务器也是如此。
WebSocket连接可以在单个服务器上垂直扩展,而基于HTTP的REST可以水平扩展。
WebSocket对于高负载是游戏的一部分(即实时可扩展聊天应用程序)的场景是理想的,而REST更适合偶尔的通信(在典型的GET请求场景中调用RESTful API)。
WebSocket更好地工作,在Web套接字连接有效期内,客户端-服务器通过同一TCP连接进行通信,而对于HTTP请求,则启动一个新的TCP连接。
WebSocket通信允许客户端和服务器彼此独立地交谈,而使用基于REST的方法,在任何给定时间,客户端正在与客户端交谈,或者服务器正在与客户端交谈。
WebSocket通信成本较低,而基于REST的通信成本相对较高。