本日给大家先容一下如何在spring boot中利用websocket,实现一个大略的谈天功能。websocket相信大家已经非常熟习了,这里就不多赘述,下面直接开始项目。
新建一个spring boot 项目,这里我们利用spring security安全框架,thymeleaf模板引擎,为了大略演示,并没有利用数据库。
2.接着大略先容一下spring security的配置,这里详细先容前面文章都有解释,须要把稳的是利用的Spring Security 4.0之后,引入了CSRF,默认是开启。这里须要将它关闭。在configure这个方法中,我们定义两个用户,设置用户名、用户密码、用户角色等信息,这里是为了方便演示,实际做法该当通过用户名去数据库查询,详细做法可以参考我专门先容如何利用spring security的文章。

3.下面便是websocket的核心配置内容了,这里须要详细跟大家先容一下
1.@EnableWebSocketMessageBroker表明表示开启利用STOMP协议来传输基于代理的,Broker便是代理的意思。
2.registerStompEndpoints方法表示注册STOMP协议的节点,并指定映射的URL。 registerStompEndpoints.addEndpoint(\"大众/endpointChat\"大众)表示添加了一个/endpointChat端点,客户端就可以通过这个端点来进行连接。
3.withSockJS()的浸染是开启SockJS支持
4.configureMessageBroker方法用来配置代理,这里的代理是/queue,表示客户端订阅地址的前缀信息,也便是客户端吸收做事真个地址的前缀信息
4.谈天掌握器,这里的逻辑也比较大略,我们假设用户只有两个,便是张三和李四相互发送信息
这里须要解释几个问题:
1.@MessageMapping:Spring对付WebSocket封装的特殊大略,供应了一个@MessageMapping表明,功能类似@RequestMapping,它是存在于Controller中的,定义一个的基本要求,功能也跟@RequestMapping类似,包括支持通配符``的url定义等等
2.SimpMessagingTemplate这个类紧张是实现向浏览器发送的功能, 是Spring-WebSocket内置的一个发送工具,可以将发送到指定的客户端。
3.在Spring MVC中,可以直接在参数中获取Principal,Principal中包含有当前用户的用户名。
4.convertAndSendToUser方法是向用户发送一条,第一个参数是目标用户用户名,第二个参数是浏览器中订阅的地址,第三个参数是本身。
5.映射路径配置
6.登录页面,便是一个大略的登录页面,没什么好说的
7.谈天页面,页面内容很大略,便是一个表单,里面有一个文本域和一个发送按钮,这个页面须要stomp.js
和socket.js这两个文件。
下面说一下js连接做事的的过程
1.var sock= new SockJS('/endpointChat');表示连接的SockJS的endpoint名称为/endpointChat,这个名称是我们在配置websocket的时候配置的:stompEndpointRegistry.addEndpoint(\"大众/endpointChat\公众).withSockJS();
2.stomp = Stomp.over(sock);表示利用STOMP来创建WebSocket客户端
3.stomp中的connect方法用来连接做事端,连接成功之后注册监听,在注册监听的时候,注册的地址/user/queue/notifications比WebSocket配置文件中的多了一个/user,这个/user是必不可少的,利用了它才会点对点传送。notifications是自定义的名称,只要和controller中的对应上就行
4. stomp中的subscribe方法来吸收做事端发送来的
5.stomp.send(\"大众/chat\"大众, {}, text);stomp中的send方法表示发送一条到做事端,要求路径是:/chat
8.测试,在不同的浏览器中用zhangsan和lisi登录,成功之后就可以谈天了
以上便是在spring boot中利用web socket实现大略的点对点谈天通信的运用,希望能对须要的朋友供应点帮助。