ssm配置socket_SSM+Spring WebSocket+Stomp实时在线聊天室项目

项目展示与地址

近段时间学习了SSM框架,就想利用这还算流行的SSM框架写个项目练练手,碰巧在网上看到了关于WebSocket的一些知识,于是就有了实现一个在线聊天室的想法。现在大体上的功能已经完成了。然后我买了一个云服务器,将整个项目部署了上去。项目地址:EasyChat(建议使用Chrome浏览,其他浏览器可能有兼容问题)。github地址:https://github.com/MccreeFei/EasyChat。整体的运行效果我还是挺满意的,后续有时间会追加一些其他功能。目前整个项目效果图如下面的gif图所示:

image

因为对自己的定位是后端程序员,所以前端也就没怎么花心思,其中登录注册版块是在网上下载的html模板,然后自己写了一些js、ajax与后台交互,主页面模仿的一个用Nodejs实现聊天室的博客。

WebSocket与Stomp

要了解WebSocket就必须要知道为什么需要WebSocket。我们都知道Http协议,但是Http有一个缺陷就是:通信只能由客户端发起,也就是说,如果你想实现在线聊天功能,只能客户端不断地发送请求给服务器询问有没有新消息到达。可想而知,这种方式是非常占资源,且效率是非常低的。因此就有了WebSocket的诞生。WebSocket是一种在单个TCP 连接上进行全双工通讯的协议,通信可以从任意一端发起。WebSocket在Http协议中完成握手,握手成功后升级到WebSocket协议。WebSocket可以传输文本以及二进制数据,但并未规范发送数据的格式。因此在WebSocket协议之上可以使用高层次的文本协议比如Stomp。

Stomp(Streaming Text Orientated Message Protocol)是流文本定向消息协议,定义了消息发送的规范,它的frame中有connect、subscribe、send等命令,connect就是请求建立连接,其中头部有accept-version表示接受的stomp协议版本等,subscribe是订阅监听某一个地址的消息,常见头部有destination表示监听地址,send是发送消息到目标地址,常见头部有destination表示发送地址。关于Stomp的更多详细内容可以去看官方文档。

Spring对基于Stomp的WebSocket提供了非常好的支持,只需要在项目中引入spring-messaging与spring-websocket模块。然后根据官方文档配置一下即可使用,配置代码如下所示:

/**

* Spring websocket配置类

*/

@Configuration

@EnableWebSocketMessageBroker

public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

/**

* 定义接收/websocket时采用wensocket连接,添加HttpSessionHandshakeInterceptor 是为了websocket握手前将httpsession中的属性

* 添加到websocket session中,withSockJS添加对sockJS的支持

*/

public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {

stompEndpointRegistry.addEndpoint("/websocket").addInterceptors(new HttpSessionHandshakeInterceptor()).withSockJS();

}

/**

* 配置消息代理,以/app为头的url将会先经过MessageMapping

* /topic直接进入消息代理

*/

@Override

public void configureMessageBroker(MessageBrokerRegistry registry) {

registry.setApplicationDestinationPrefixes("/app");

registry.enableSimpleBroker("/topic");

}

}

另外补充一点的是:基于WebSocket添加了对sockJS的支持,sockJS会对那些客户端不支持WebSocket的浏览器更换策略比如长轮询,这样不支持WebSocket的浏览器也能享受服务器的服务,就是效率不高罢了。

登录注册模块

登录与注册都采用了ajax技术,都是发送json数据到后台,后台查询然后返回json数据给前台做出响应。

登录

返回登录json的消息,我封装了一个实体ReplayLoginMessage。项目添加了jakson-databind模块依赖并且mvc配置了MappingJackson2HttpMessageConverter,后端返回对象将会直接转化成json数据传递到前端。MappingJackson2HttpMessageConverter并不需要显示配置࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSMSpring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一层楼。 二、资料亮点 基础教程与练习项目:从基础知识讲起,结合实际练习项目,让您轻松上手SSM开发。 进阶技术与案例分析:针对进阶开发者,提供深入的技术探讨和案例分析,助您深入理解SSM的高级特性。 实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您学习SSM的得力助手。适用于Java Web开发、企业级应用开发、个人项目实践等多个领域。 四、使用建议 系统学习:按照资料提供的顺序进行系统学习,确保知识体系的完整性。 实践为王:在学习过程中注重实践操作,通过实际项目加深理解。 持续反馈与调整:根据学习进度和反馈,适时调整学习策略,提高学习效果。 五、安全与责任 在使用SSM框架进行开发时,请确保遵循最佳实践和安全准则,以保障系统的稳定性和安全性。在使用提供的资料时,请遵守版权法规,尊重原作者的权益。让我们共同为推动SSM技术的发展而努力!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值