1.websocket之前有三种双向通信的方式
轮询:轮询是客户端和服务器之间会一直进行连接,每隔一段时间就询问一次
长轮询
iframe流
2.websocket原理:
计算机网络应用层的协议,用来弥补http协议在持久通信能力上的不足。与http协议一样,WebSocket协议也需要通过已建立的TCP连接来传输数据。具体实现上是通过http协议建立通道,然后在此基础上用真正的WebSocket协议进行通信,所以WebSocket协议和http协议是有一定的交叉关系的。
优点:
· WebSocket协议一旦建议后,互相沟通所消耗的请求头是很小的
· 服务器可以向客户端推送消息了
缺点:
· 少部分浏览器不支持,浏览器支持的程度与方式有区别
websocket构造函数:
var ws=new WebSocket('ws://localhost:8080');
readyState属性返回实例对象的四种状态:
connecting:值为0表示正在连接
open:值为1表示连接成功
closing:值为2表示连接正在关闭
closed:值为3表示连接已经关闭或者打开连接失败
websocet.onopen用于指定连接成功后的回调函数,如果指定多个回调函数使用addEventListener方法
websocket.onclose用于指定连接关闭后的回调函数
websocket.onmessage用于指定收到服务器数据后的回调函数
websocket.send()用于向服务器发送数据
webSocket.bufferedAmount表示还有多少字节没有发送出去,可以用来判断发送是否结束
websocket.onerror用于指定报错时的回调函数
3.websocket聊天室如果发送失败了,你怎么解决这个问题?如何做到发送图片? 有了文字、图片等不同的数据类型之后,你如何实现数据的存储,如何设计,前端如何获取?
(2)websocket聊天室有输入框,那么怎么获取的,对于使用div来模仿textarea,我说使用正则去掉div,那么用户输入的也是div呢? 如果发送失败了呢? 究竟应该是先发送,还是应该先存储到redux中,考虑用户体验(仿照微信)。
(3)websocket的使用,底层是如何处理的。(类似于xhr的。)、
(4)websocket在连接的过程中, 会有新包。。balabala 一堆听不懂的词,非常尴尬,,, 我就直接说的不会。
(5)websocket是如何实现服务器端推送的
(6)websocket和http的区别是什么?websocket的优点是什么?
(7)为什么使用websocket? websocket是怎么连接的,一定需要通过http协议吗? 短轮询、commet、长轮训都介绍一下。各有什么优缺点。