核心技术websocket
前提
1、tocmat7.02版本以上
2、浏览器支持websocket通讯
3、这个是html5的功能
客户端和服务器建立连接
jsp/html页面
1、浏览器和后台服务器要通信,首先是url
通俗易懂的格式如下 "ws://localhost:8080/项目名/请求名"
如果要携带参数的话, "ws://localhost:8080/项目名/请求名/"+参数
var target = "ws://"+window.location.host+"/LawerSys/websocket"+"/"+username;
2、与后台服务器建立连接
var socket = new WebSocket(target);
Java后台部分
1、新建一个普通的类,在这个类上面加上@ServerEndpoint("/请求名");
这个"/请求名"与html中 "ws://localhost:8080/项目名/请求名" 请求名一致;
html页面与后台之所以可以建立的连接,就是根据@ServerEndpoint来识别websocket通讯类,根据("/请求名")和前台的请求相匹配的对应的类;
2、new 一个方法,来和前台建立连接,
websocket通讯,浏览器和服务器只会建立一次连接,因此,我们需要在建立连接握手的时候,把这个会话存储到集合里面
1、一般是用map集合,因为key是不能重复的
2、如果是List集合的话,无法区分是自己发的信息还是别人发的信息
3、集合存在意义,就是实现循环遍历转发给连接服务器的客户端浏览器页面
但是我不能说open()这个方法是建立连接的它就连接的,需要标识@Onopen
注意:value可以是java类的类型
注意要有static关键字,如果没有这个关键字,添加集合的长度一直都是1;
原因是两个浏览器访问后台服务器,然后虽然执行了添加操作,但是执行结束,这个集合就销毁了,动态分配内存,所以需要static关键字;
value也可以是Session,我试过这两个,都没有问题