Spring boot集成websocket(二)----基于注解的方式

首先先介绍spring boot和websocket的集成,基于注解的方式

修改启动类增加Enable配置

//启动websocket的支持
@EnableWebSocket

增加配置类

@Configuration
public class WebSocketConfig {
	
	@Bean
	public ServerEndpointExporter serverEndpointExporter() {
		return new ServerEndpointExporter();
	}
}

配置hndler

@ServerEndpoint(value = "/webscoket/call/{ID}")
@Component
public class CTIHandler extends ParentHandler implements CallBackService{
	/**
	 * 配置日志
	 */
	private final static Logger logger = LoggerFactory.getLogger(CTIHandler.class);
    /**
     * 连接
     * @param session
     * @throws Exception
     */
	@OnOpen
    public void onOpen(Session session,@PathParam("ID") String userName,EndpointConfig config) throws Exception {
    	logger.info("获取当前"+socketMap.get(userName));
    	if(socketMap.get(userName)==null) {
    		socketMap.put(userName,session);
    	}
    	AliyunMessageService aliyunMessageService =  (AliyunMessageService) SpringUtil.getBean("aliyunMessageService");
    	//根据用户角色匹配响应的频道和标签,然后进行消息订阅
    	aliyunMessageService.subscription("DEV_ZHUBANXIAN_MQ", "T2", this);
    	logger.info("链接成功");
    }

    /**
     * 接收socket信息
     */
	@OnMessage
    public void onMessage(String message, Session session) throws Exception {
    	logger.info("收到的消息"+message);
    }

	/**
	 * 连接出错
	 */
	@OnError
    public void onError(Session session, Throwable error) throws Exception {
        if (session.isOpen()) {
            session.close();
        }
        logger.info("连接出错"+error);
    }
    /**
     * 连接关闭
     */
	@OnClose
    public void onClose(@PathParam("ID") String userName) throws Exception {
    	if(socketMap.get(userName)!=null) {
    		socketMap.remove(userName);
    	}
        logger.info("连接已关闭:" + userName);
    }

	@Override
	public void dealReceive(String message) {
		// TODO Auto-generated method stub
		sendMessageToUser("sales01", message);
	}
}

springutil是用来在websocket中注入spring相关的备案的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值