使用STOMP实现发送消息给指定用户步骤如下:
- 添加pom文件依赖
- 书写客户端用户实体类
- 书写客户端渠道拦截适配器
- 配置websocket stomp
- 书写控制层
- 书写客户端
1.添加pom文件依赖
<!-- springboot websocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
2.书写客户端用户实体类
自定义客户端用户实体类,封装来自于客户端的信息,相当于为每一个客户端提供唯一的标识
package com.ahut.entity;
import java.security.Principal;
/**
*
* @ClassName: User
* @Description: 客户端用户
* @author cheng
* @date 2017年9月29日 下午3:02:54
*/
public final class User implements Principal {
private final String name;
public User(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
3.书写客户端渠道拦截适配器
利用拦截的方式,获取包含在stomp中的用户信息,并将认证的用户信息设置到当前的访问器中
package com.ahut.websocket;
import java.util.LinkedList;
import java.util.Map;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.ChannelInterceptorAdapter;
import org.springframework.messaging.support.MessageHeaderAccessor;
import com.ahut.entity.User;
/**
*
* @ClassName: UserInterceptor
* @Description: 客户端渠道拦截适配器
* @author cheng
* @date 2017年9月29日 下午2:40:12
*/
public class UserInterceptor extends ChannelInterceptorAdapter {
/**
* 获取包含在stomp中的用户信息
*/
@SuppressWarnings("rawtypes")
@Override