1. WebSocket 是什么
一言以蔽之,WebSocket允许服务器「主动」给浏览器发消息,如教程演示截图,服务器会主动推送比特币价格给浏览器。
2. 为什么要用 WebSocket
实时获取服务端数据这种需求,在使用 WebSocket 之前也是可以做到的,主要方式就是轮询。比如 javascript上一个定时器,每隔几秒钟向服务端发送消息询问最新价格,然后显示在浏览器上。但是这种浏览器主动轮询的方式有几个弊端:
服务器压力大。假设浏览器每隔一秒钟发出请求,如果同时有 100 个用户在访问当前页面,那么每秒钟就至少有 100 个请求要处理,服务器压力是很大的。
浪费严重。倘若服务器数据每隔 60 秒才有新数据,那么其中有59次访问都是浪费的。
实时性差。毕竟是每隔一秒钟才发出请求,假如说为了缓解服务器的压力,做成每隔 10 秒才发出请求,就很有可能错过数据的更新,没有及时拿到数据。
以上就是浏览器传统的轮询方式的弊端,而使用 WebSocket 就可以解决这些问题。
服务器压力问题。WebSocket 是服务端向浏览器主动推送消息,只有服务器有新数据的时候才需要推送,没有数据就不用推送,所以服务器性能压力小很多
浪费问题。每次有效数据才推送,没有新数据就不推送,不存在浪费问题
实时性问题。一旦有了新数据马上就推送,浏览器实时获取新数据。
3. 怎么开发 WebSocket 应用
WebSocket 既然好处那么多,那么如何开发支持 WebSocket 的 J2EE 应用呢?
可以运行的项目
老规矩,我会先给大家可以跑起来的项目,确认是走得通的。 不要大家搞半天,项目本身都是有问题的,实在是浪费大家时间 (我在基于百度学习的过程中,就搜到大量未经验证的教程,各种跑不通,浪费很多时间,真是感到深恶痛绝)。
从创建项目开始撸起,并提供必要的jar包下载
服务端代码开发
前端代码开发
如此这般照着做一轮,就可以看到效果了。
疑难问题
最后把开发这个 WebSocket 教程期间碰到的疑难问题也单独强调了一下,万一有同学有类似的问题也少走弯路。
4. WebSocket 教程地址
http://how2j.cn/k/websocket/websocket-tutorial/1625.html?tid=115
教程由个人完成,局限于个人的经验和视野,有诸多不足之处,请各位多多指点,谢谢。