1 . WebSocket是什么

WebSocket是一种让客户端和服务器之间能进行双向实时通信的技术, 他是html5的一个协议规范, 本质上是个基于TCP的协议, 他通过HTTP/HTTPS协议发送一条特殊的请求进行握手后创建一个TCP连接, 此后浏览器/客户端和服务器之间便可以通过此链接来进行双向实时通信.

2 . 为什么要用WebSocket

  • 一直以来, HTTP协议是无状态, 单向通信, 即客户端请求一次, 服务器回复一次, 如果想让服务器消息及时下发到客户端, 需要采用类似于轮询的机制, 即客户端定时频繁的向服务器发出请求, 这样效率很低, 而且HTTP数据包 本身的字节量较大, 浪费了大量宽带个服务器资源;
  • 为提高效率, 出现了AJAX/Comet技术, 他实现了双向通信且节省了一定宽带, 但仍然需要发出请求, 本上仍然是轮询,
  • 新一代HTML标准HTML5推出了WebSocket技术, 它使客户端个服务器之间能通过HTTP协议建立TCP连接, 之后便可以随时随地进行双向通信, 且交换的数据包 信息量很小,

3 . 如何使用WebSocket

他支持WebSocket的浏览器, 创建Socket之后, 通过onopen, onmessage, onclose, onerror 四个事件的实现来处理Socket的相应

4 . WebSocket与HTTP丶TCP的关系

WebSocket和HTTP都属于应用层协议, 且都是基于TCP的, 他们的send函数最终也是通过TCP系统接口来做数据传输, 那么WebSocket和HTTP的关系, WebSocket在来哪里握手连接时, 数据是通过HTTP协议传输的, 但是在连接建立后, 真正的数据传输阶段则不需要HTTP协议的参与

什么情况下使用WebSocket

如果游戏需要同时支持移动端, Web端, 那么毫无疑问应该使用WebSocket, 现在呵呵平台都提供了相应的WebSocket实现, 如果游戏不需要支持Web端, 且对实时性要求比较高, 如多人射击,MMORPG之类, 那么使用TCP/UDP结合的原生Socket会比较好

SocketIO

WebSocket是HTML5最新提出的规范, 虽然主流浏览器都已经支持, 但让然可能有不兼容的情况, 为了兼容所有的浏览器, 给程序员提供一致的编程体验, SocketIO将WebSocket, AJAX和其他的通信方式全部封装成统一的通信接口, 也就是说, 我们在使用SocketIO时, 不用担心兼容问题, 底层会自动选用最佳的通信方式, 因此说WebSocket是SocketIO的一个子集


道友
1 声望0 粉丝