1. 1. 前言
  2. 2. 参考

前言

上一篇写了和 cookie 还有 storage 相关的内容,在看的过程中,又看到了 web socket 的概念,之前对这个概念就比较模糊。前段时间吃饭闲聊的时候问了一个后端的同事,他给我的解释是说 socket 是比 http 更底层的通信协议,就是 http 是基于 socket 的。这样一说,我就大概明白了, socket 是一个建立通信联系的协议,或者说用 web socket 主要是建立客户端和服务器之间的联系的。

今天正好又看到这个概念,就去 runoob 上顺便看了下这个概念的相关内容,发现好理解了很多。就先把这些内容还有参考链接罗列出来,然后以后会慢慢深入了解。

参考

html5 web socket

这篇文章是 runoob 上关于 web socket 的介绍,前面对于 web socket 的解释非常概括,值得一读。读完之后会觉得 web socket 会和 ajax 一样,都是一种和服务器之间的通信。包括一些方法,比如 send,还有 readyState 这样类似的方法和属性都是非常相似的。

websocket 和 socket 的区别

鉴于前端对于后端的不了解,以及博主本身也属于转行进入 cs,所以很多概念其实完全不了解,就比如 websocket 和 socket 在博主看来就以为是一个概念,但是其实并不是。这篇文章就解开了博主对于这两个概念的很多疑惑。所以我怀疑之前我们的后端工程师给我的解释有可能也是 socket 的内容,而并不是 web socket 的内容。

文中还有一张图对于理解 tcp/ip 还有 http 所处的位置也有很好的说明。

本文后面附了两个链接,是《刨根问底 http 和 websocket 协议》的全部内容,然后我又看了这两篇文章,其中主要看了第二篇。因为第一篇的重点是介绍 http 协议,而第二篇的重点才是介绍 websocket 协议。所以这两篇文章也罗列进入了我的这篇文章中。

刨根问底 http 和 websocket 协议(一)

这篇文章不做重点讨论和研究,因为主要讲的是 http 协议的内容。

刨根问底 http 和 websocket 协议(二)

这篇文章的主要内容是 websocket 相关的,其中有一些我觉得非常好的内容,这里做一下摘录和笔记说明。

上一篇中提到WebSocket的目的就是解决网络传输中的双向通信的问题,HTTP1.1默认使用持久连接(persistent connection),在一个TCP连接上也可以传输多个Request/Response消息对,但是HTTP的基本模型还是一个Request对应一个Response。这在双向通信(客户端要向服务器传送数据,同时服务器也需要实时的向客户端传送信息,一个聊天系统就是典型的双向通信)时一般会使用这样几种解决方案

这句话可以看得出来,http 的连接是属于一个 request 返回一个 response 的方式,也就是说如果客户端不发出 request 的话,服务器是不会返回 response 的。其实是一个比较简单和比较基础的连接,也比较原始。而我们经常在看 websocket 概念相关的文章是,会看到一个叫“全双工通信”的概念,也就是上面引用中所述的“双向通信”,也是英文中的“duplex communication”这个概念。可见,这个 websocket 就是要解决 http 这种原始简单的通信而设置的。就是要设置一种客户端和服务器都可以主动或者被动向对方发送数据,或者说消息,或者说信息的一种方式。

文章对轮询(polling),长轮询和长连接都做了比较好的总结,也是值得阅读的。

从上面这篇文章又可以看到关于 socket.io 相关的内容,下面这篇文章就是关于使用 node 的 socket.io 框架来实现的一个应用,而这个 socket.io 就是实现了客户端和服务器实时通信的效果。也可以通过这个应用来更深入的了解 socket。

基于 socket.io 实现实时你画我猜游戏

文中有 github 的源码,同时这个 socket.io 也是基于 node 的,所以非常值得一试,可以考虑通过重现这个应用来更加深刻的理解 socket。

基于Socket.IO的简单聊天应用

这篇文章就是对 socket.io 官网的内容翻译,可以参考,主要还是需要再看看 socket.io 的官网。通过看 socket.io 可以实现一个实时聊天室的应用,而且还可以深入了解 socket 的概念。

socket.io开发多人聊天室教程

本文同样是使用 socket.io 实现实时聊天工具的攻略。

web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

这篇是野狗发的一个微信的文章,关于实时通讯相关的技术,也是解释的非常专业。值得一读。


2017.3.24 first published