Spring3如何集成WebSocket服务

Spring3虽然不直接支持WebSocket,但可以通过自定义实现来集成。本文介绍了如何在Spring3项目中创建WebSocket服务,包括参考Tomcat源码实现WebSocket协议,并利用ApplicationListener在容器初始化时启动服务,确保能使用Spring注解。
摘要由CSDN通过智能技术生成

Spring3没有提供原生的对于websocket的支持,但是如果你的项目的架构基础都是spring3(出于种种原因迟迟无法升级到spring4),但是又想集成websocket的服务,怎么办?有办法解决吗?当然可以啦

既然没有原生的支持,那么为什么我们不直接自己写一个实现呢?于是说干就干,

首先我们需要实现websocket的协议,这个协议的具体我就不说了,想了解的朋友可以自己在百度上谷歌一下,可以参考下tomcat的源码实现,实现了websocket的服务以后我们就有了websocket的服务端了,但是我们是在springmvc的框架下面,如何启动我们的websocket服务呢,我研究了下,可以使用2种方法,

一是使用监听器,配置web.xml,来初始化我们的服务,但是这种方法无法使用到spring的 注解,于是这种方式就不太适用,于是想到了第二种方式,通过实现ApplicationListener来在容器初始化的时候启动服务,这样启动的服务里面就可以正常的使用spring相关的注解了。

好了废话不多说了,上代码:

Initwebsocket.java

@Service
public class Initwebsocket implements ApplicationListener<ContextRefreshedEvent> {
	private static Log log = LogFactory.getLog(Initwebsocket.class);
	@Autowired
	private WebSocketServerService webServer;
	// @Override
	// public void contextDestroyed(ServletContextEvent arg0) {
	// try {
	// webServer.stopService();
	// } catch (IOException e) {
	// log.info("关闭websocke失败");
	// }
	//
	// }
	//
	// @Override
	// public void contextInitialized(ServletContextEvent arg0) {
	//
	// }

	@Override
	public void onApplicationEvent(ContextRefreshedEvent arg0) {
		if (arg0.getApplicationContext().getParent() == null) {
			// 开启websocket服务
			try {
				webServer.startService();
			} catch (UnknownHostException e) {
				log.debug(e);
			} catch (IOException e) {
				log.debug(e);
			}
		}
		// 初始化容器后自动执行的方法

	}

}
核心服务代码如下:

WebSocketServerService.java

@Service
public class WebSocketServerService {

	@Autowired
	ITestWebsocket iTestWebsocket;

	private static Log log = LogFactory.getLog(WebSocketServerService.class);

	
	private String websocketPort;
	
	private String websocketIp;
	
	private String websocketBlockflag;
	/**
	 * 端口号
	 */
	@SuppressWarning
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值