分布式面试题(六):WebSocket

Q: 什么是websocket? websocket是HTML5的一种新协议,允许服务器向客户端传递信息,实现浏览器和客户端双工通信。

Q: 全双工通讯协议的概念 全双工是通讯传输的一个术语。通信允许数据在两个方向上同时传输,他在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输。

全双工:例如我们使用的手机就是全双工,在同一时刻两个用户可以同时给对方传送数据 半双工:例如我们使用的对讲机,当A方按住通话按钮才可以向B方传送数据,B方也是,在同一时刻只有一个用户能够传送数据(A/用户都可以传递信息,但是不能够同时传递) 单工:例如我们看电视时,我们只能接收对方发送的信息,不能够给对方传递信息;

Q: websocket有哪些特点? 与http协议有良好的兼容性; 建立在TCP协议之上,和http协议同属于应用层; 数据格式比较轻量,性能开销小,通信高效; 可以发送文本,也可以发送二进制; 没有同源限制,可以与任意服务器通信。

Q: http和websocket的区别? http协议是短链接,因为请求之后,都会关闭连接,下次请求需要重新打开链接。 websocket协议是一种长连接,只需要通过一次请求来初始化连接,然后所有请求和响应都是通过TCP链接进行通信。

Q: websocket和socket的区别? socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。

而websocket协议是一个完整的应用层协议,拥有一套完整的API。

Q: WebSocket中的常用注解有哪些? @ServerEndpoint :类似与servlet中的 RequestMapping @OnOpen:类似与servlet中的 init()初始化 @OnClose:类似与servlet中的destroy() 销毁 @OnMessage:类似于servlet中的service请求 (意思就是发送数据的方式 @doPost()/ @doGet() 组合)

Q: 服务端实时通信有哪些方法? 1、AJAX轮询 2、Long Polling长轮询 3、WebSocket

Q: websocket客户端代码?

// 创建一个webSocket对象
const ws = new WebSocket("ws://127.0.0.1:3000/websocket/test")
ws.onopen = e => {
  // 连接后监听
  console.log("创建了websocket")
}

Q: websocket应用场景? 1、社交订阅 2、多玩家游戏 3、协同编辑文档 4、数据流状态 5、多人聊天

经验分享 程序员 微信小程序 职场和发展