WebSocket+Koa
1.TCP和HTTP的简单理解
Http协议建立在TCP协议基础之上,当浏览器需要从服务器获取网页数据的时候,会发一次Http请求。Http会通过TCP建立一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,所以Http是一种短链接。
当html变的复杂,嵌入了很多图片,每次访问图片都需要建立一次TCP链接就显得很低效,因此Keep-Alive被提出解决低效的问题,从HTTP1.1开始默认开启Keep-Alive,保持连接特性。总的说就是网页打开之后,客户端与服务器之间传输Http数据的TCP连接不会关闭,客户端再次访问服务器上的网页,会继续使用这条。时间是有限制范围的,在不同服务器也可以设置超时时间。
2.HTTPS与HTTP的一些区别
HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
3.Http1.0,Http1.1和Http2.0的区别
HTTP/1.0 一次请求-响应,建立一个连接,用完关闭;每一个请求都要建立一个连接;
HTTP/1.1 解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;
HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行。headers压缩。
4.什么是WebSocket
WebSocket是HTML5的。使客户端与服务器之间数据交换变的更简单,允许服务端主动向客户端推送数据,在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
浏览器通过JavaScript向服务器发起建立WebSocket连接的请求,连接建立以后,客户端和服务端可以通过TCP连接直接交换数据。当你获取WebSocket连接后,可以通过send()方法向服务端发送数据,并通过onmessage事件接收服务器返回的数据。
5.具体实现
前端部分
1 |
|
koa部分
1 |
|
一般都有兼容性问题,可以使用socket.io的库
具体参考阮大师的文章
q