package org.hsweb.web.socket;
import org.hsweb.web.socket.cmd.CMD;
import org.hsweb.web.socket.cmd.CmdProcessor;
import org.hsweb.web.socket.message.SimpleWebSocketMessageManager;
import org.hsweb.web.socket.message.WebSocketMessage;
import org.hsweb.web.socket.message.WebSocketMessageManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import javax.annotation.PostConstruct;
import java.io.IOException;
/**
* 测试命令处理器
* Created by 浩 on 2016-01-19 0019.
*/
@Component
public class TestProcessor implements CmdProcessor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
private WebSocketMessageManager webSocketMessageManager = new SimpleWebSocketMessageManager();
@Override
public String getName() {
return "test";
}
@Override
public void exec(CMD cmd) throws Exception {
logger.info("execute cmd :" + cmd);
//收到命令后,向客户端推送一条消息
if ("subscribe".equals(cmd.getParams().get("type"))) {
webSocketMessageManager.subscribe("test", "admin",cmd.getSession());
}
WebSocketMessage message = new WebSocketMessage();
message.setType("test");
message.setTo("admin");
message.setContent("test");
new Thread(() -> {
for (int i = 0; i < 1000; i++) {
try {
Thread.sleep(2000);
webSocketMessageManager.publish(message);
} catch (Exception e) {
}
}
}).start();
}
@Override
@PostConstruct
public void init() throws Exception {
logger.info("init TestProcessor");
}
@Override
public void onSessionConnect(WebSocketSession session) throws Exception {
logger.info("小伙伴进来了");
// webSocketMessageManager.onSessionConnect(session);
}
@Override
public void onSessionClose(WebSocketSession session) throws Exception {
logger.info("小伙伴离开了");
// webSocketMessageManager.onSessionClose(session);
}
}