wsld2java_java-webSocket

@Component//申明为spring组件

@ServerEndpoint("/confservice/confWebSocketService/{id}")//webSocket连接地址

public class ConfWebSocketService {

private static final Logger logger=Logger.getLogger(ConfWebSocketService.class);

private static Map sessionMaps = new HashMap<>();

private static Session sessionf;

private static List allUserMS = new ArrayList<>();

private static List allUserWY = new ArrayList<>();

@Autowired

private IUserService userService;//静态初使化当前类

public static ConfWebSocketService confWebSocketService;//注解@PostConstruct,这样方法就会在Bean初始化之后被Spring容器执行

@PostConstruct

publicvoidinit() {

confWebSocketService= this;

}/**

* 连接成功调用

* @param session*/@OnOpen

publicvoid onOpen(Session session, @PathParam("id") String id) {

Thread thread= new Thread(newRunnable() {

@Override

publicvoidrun() {try{

sessionf=session;

sessionMaps.put(session, id);

}catch(Exception e) {

logger.debug("webSocket连接异常:"+e.getMessage());

e.printStackTrace();

}

}

});

thread.start();

}/**

* 关闭连接调用*/@OnClose

publicvoidonClose(Session session) {

Thread thread= new Thread(newRunnable() {

@Override

publicvoidrun() {

sessionMaps.remove(session);

}

});

thread.start();

}/**

* 收到客户端消息调用

* @param message

* @param session*/@OnMessage

publicvoidonMessage(String message,Session session) {if (message.equals("ping!")) {//保持和会议服务长连接

sendMessage(message,"0");

}else if(message.equals("yuyin!"))

{//保持和语音识别长连接

sendMessage(message,"2");

}

}/**

* 出现错误调用

* @param session

* @param error*/@OnError

publicvoidonError(Session session, Throwable error) {

error.printStackTrace();

}/**

* 发送消息(自定义的方法)*/public staticvoidsendMessage(String message,String flag) {try{//session.getBasicRemote().sendText(message);//同步发送消息

if (flag.equals("1") || flag.equals("2")) {

Role role=newRole();if (flag.equals("1")) {

role.setType("2");if (allUserMS.size() == 0) {

allUserMS=confWebSocketService.userService.getUserByRole(role);

}

}else{

role.setType("0");if (allUserWY.size() == 0) {

allUserWY=confWebSocketService.userService.getUserByRole(role);

}

}

}

Set> entrySet =sessionMaps.entrySet();for (Entrymap : entrySet) {

String checkId=map.getValue();if (flag.equals("0") && checkId.equals("huiyifuwu")) {

sessionf=map.getKey();

sessionf.getAsyncRemote().sendText(message);//异步发送消息

break;

}else if (flag.equals("1") && allUserMS.size() > 0) {for(User user : allUserMS) {if(checkId.equals(user.getId())) {

sessionf=map.getKey();

sessionf.getAsyncRemote().sendText(message);//异步发送消息

break;

}

}

}else if (flag.equals("2") && allUserWY.size() > 0) {for(User user : allUserWY) {if(checkId.equals(user.getId())) {

sessionf=map.getKey();

sessionf.getAsyncRemote().sendText(message);//异步发送消息

break;

}

}

}

}

}catch(Exception e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值