面试题: 什么是websocket
面试题: 什么是websocket
参考链接:http://www.ruanyifeng.com/blog/2017/05/websocket.html?utm_source=tuicool&utm_medium=referral
1. websocket使用也比较多的,它和http协议没有太多关系,但是有交集在于:(Websocket 其实是一个新协议,跟 HTTP 协议基本没有关系,只是为了兼容现有浏览器,所以在握手阶段使用了 HTTP)
2. 首先,WebSocket 是一个持久化的协议,相对于 HTTP 这种非持久的协议来说。(相对于http来说,http是一次请求一次响应,结束:request--response结束。在通讯过程中,一直在请求响应,反复如此)而websocket通过一次http握手,整个通讯建立在一次连接状态中,服务端会一直知道你的信息,知道关闭websocket,不需要服务端反复解析。在传输中节省流量和时间,提高性能
3. HTTP 协议有一个缺陷:通信只能由客户端发起。而websocket协议,实现了服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
http websocket区别
4. WebSocket 的用法相当简单。
var ws = new WebSocket("wss://echo.websocket.org"); ws.onopen = function(evt) { console.log("Connection open ..."); ws.send("Hello WebSockets!"); }; ws.onmessage = function(evt) { console.log( "Received Message: " + evt.data); ws.close(); }; ws.onclose = function(evt) { console.log("Connection closed."); };
图示:
WebSocket
WebSocket协议为web应用程序客户端和服务端之间提供了一种全双工通信机制。
特点:
(1)握手阶段采用HTTP协议,默认端口是80和443
(2)建立在TCP协议基础之上,和http协议同属于应用层
(3)可以发送文本,也可以发送二进制数据。
(4)没有同源限制,客户端可以与任意服务器通信。
(5)协议标识符是ws(如果加密,为wss),如ws://localhost:8023