原理部分(转知乎Ovear,赞同人数极多)
- HTML5出的协议,但HTTP不支持持久化连接:websocket是一个新协议,跟h协有交集并非全部,层级不同
Http生命周期通过Request来界定,一个request一个response,不变的是Request=Response,response被动且不能主动发起
首先看一下Http的握手阶段
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
其中Upgrade:websocket
为核心
Connection:Upgrade
gap苏服务器发起ws协议,然后验证服务器助理,并告知协议版本
服务器会返回
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
最后Http告诉客户协议的更换
Upgrade: websocket
Connection: Upgrade
ajax轮询和long poll都是在不断的建立Http连接,等待服务端处理,可以体现http的被动性,
即服务器不能主动联系客户端,
up主写了个奇怪的场景。。。。客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)客户端:麻烦你有信息的时候推送给我噢。。服务端:ok,有的时候会告诉你的。服务端:balabalabalabala服务端:balabalabalabala服务端:哈哈哈哈哈啊哈哈哈哈服务端:笑死我了哈哈哈哈哈哈哈
这种就是回调,有消息时主动干啥
应为他们我过了手,就一直在连接态中
感觉比较科普。。。看看就行了
然后开始编程了
在pom里面加dependency,看人家博客,加了jackson的annotation,core,databind,它可以把java转json,所以websocket和json是虾米关系捏,我就当它只能传json吧,估计比较方便。spring一系列的dependency,然后引入了gson,这又是啥捏。卧槽,跟jackson差不多,先不管了。
接下来写了web.xml,很好奇里面的那些东西都代表什么来着,我记得应该是配置了一个SpringMvc服务器,前面的ns,xsi命名空间,版本规范不说,下面在servlet中申明了springmvc自带的dispatcherServlet,并写了servletMapping,即总的网址/,blablablabla
在写spring-mvc.xml,User.java,这个User拥有id,name,password三个属性
在websocket里写了很多,先谢了一个WebSocketConfig,@Component和一些东西,配置了一个MyWebSocketHandler和一个拦截器(这啥,做完这票得好好学学spring了)
我现在感觉handler像一个钩子.
无论如何都引入不了jquery明明路径都是对的,还引入了绝对路径。这是为什么呢、
哇!!网上真的大神多啊,原来是尼玛xml配置的问题,hiehiehie