持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情
之前也已经学习整理了几次 WebSocket 的内容,主要梳理了 WebSocket 与 Http 的相同点与不同之处,以及简单引入了一下 WebSocket 的概念,关于 WebSocket 到底是什么,好像没怎么说明白,这次就再详细的说明一下.....
Socket?
在网络中的两个应用程序(进程)需要全双工相互通信 (全双工即双方可同时向对方发送消息),需要用到的就是 Socket,它能够提供端对端通信,对于程序员来讲,他只需要在某个应用程序的一端(暂且称之为客户端)创建一个 Socket 实例并且提供它所要连接一端 (暂且称之为服务端) 的 IP 地址和端口,而另外一端(服务端)创建另一个 Socket 并绑定本地端口进行监听,然后客户端进行连接服务端,服务端接受连接之后双方建立了一个端对端的 TCP 连接,在该连接上就可以双向通讯了,而且一旦建立这个连接之后,通信双方就没有客户端服务端之分了,提供的就是端对端通信了。我们可以采取这种方式构建一个桌面版的 IM 程序,让不同主机上的用户发送消息。从本质上来说,Socket 并不是一个新的协议,它只是为了便于程序员进行网络编程而对 TCP/IP 协议族通信机制的一种封装。
WebSocket?
WebSocket 是 HTML5 规范中的一个部分,它借鉴了 Socket 这种思想,为 Web 应用程序客户端和服务端之间 (注意是客户端服务端) 提供了一种全双工通信机制。同时,它又是一种新的应用层协议,WebSocket 协议是为了提供 Web 应用程序和服务端全双工通信而专门制定的一种应用层协议,通常它表示为:ws://echo.websocket.org/?encoding=text HTTP/1.1,可以看到除了前面的协议名和 Http 不同之外,它的表示地址就是传统的 url 地址。
总结:WebSocket 并不是简单地将 Socket 这一概念在浏览器环境中的移植。
主要针对 Socket 和 WebSocket 两个概念做阐述,从而解释到底 WebSocket 是什么?可能内容比较简少,但如果能够把上述两个概念搞清楚、搞明白、不会弄混淆,就已经很棒棒了......
希望本文能够帮到你,如有错误,望指正!
我向你敬礼啊,Salute!