背景
WebSocket协议是一种基于TCP的新协议。不同于http仅能实现单向通信,它实现了浏览器与服务器的全双工通信,因此可以被应用在bs架构的聊天系统、远程日志查看等系统中。websocket在建立连线时仅需要进行一次“握手”就能建立“长连接”,也就是浏览器发出websocket连线请求,然后服务器发出回应即可。目前chrome、firefox和IE10+等主流浏览器都支持Websocket.
问题
由于项目需要,最近在做一个如下的自主上线系统。为了便于尽早发现上线过程中的问题,该系统中有一个在web页面上实时显示服务日志的功能,我在通过websocket实现这个功能的过程中遇到了2个问题:websocket建立连接时需要传递参数(例如服务器ip,项目名称,日志文件位置等)进去;需要注入service 层的类,以便在onOpen()方法中进行数据查询和业务处理。百度谷歌一顿搜索后,发现这两个问题还挺有共性的,很多人都在问,但是靠谱的答案却比较少见。通过查看源码和各种折腾,最后还是解决了这些问题,做个总结。