基于spring boot 2.x的websocket示例

spring boot 2/spring 5自带了websocket,下面是最基本的示例(包括java服务端、java客户端以及js客户端)

一、pom依赖

  这里直接用了目前spring-boot的最新版本2.0.5 RELEASE.

 

二、websocket配置类

先定义一些常量,方便后面使用

然后才是配置:

这个配置的主要作用是对外暴露访问的端点,以及定义客户端访问时,收发消息的方法url前缀。

 

三、定义收发消息的实体类

客户端发过来的消息:

服务端返回的消息:

重要注意事项:收发的消息类,必须存在"无参的默认构造函数",否则topic订阅会出问题,而且代码不报错!

 

四、定义Controller类

这跟常规的spring mvc中的Controller一样,定义收发消息的具体url映射以及处理逻辑。

 

五、服务端入口

这个类没啥好说的,唯一注意的是,实际调试中发现,这个类的package位置,最好放在"最外"层,移到子package后,client客户端会连接不上。(应该是要同步修改其它地方)

点击查看原图

 

 

六、js客户端

html文件(主要是提供一个简单的UI)

/webjars/xxx.js 这些都是webjars包里打包内置的,真正处理逻辑应用逻辑的,是对应的JS文件app.js

  

七、java客户端

通常有js客户端,普通Web场景就足够了,但如果需要java的客户端,可以参考下面这样:

大致逻辑,就是先connect,连上后,就subscribe topic(订阅主题,这样就能收到其它人说的话),发送消息直接用session.send即可。

 

运行效果:

js客户端

点击查看原图

java客户端:

点击查看原图

 

附示例源代码下载:https://github.com/yjmyzz/spring-boot-websocket-sample

 

参考文章:

https://spring.io/guides/gs/messaging-stomp-websocket/

https://www.sitepoint.com/implementing-spring-websocket-server-and-client/

https://stackoverflow.com/questions/29386301/writing-a-client-to-connect-to-websocket-in-spring-boot

 

posted @   菩提树下的杨过  阅读(22545)  评论(2编辑  收藏  举报
点击右上角即可分享
微信分享提示