判断数据变化实时推送
import javax.websocket.Session;
public class OneThread extends Thread {
private Session session;
private List<AlarmMessage> currentMessage;
private DBUtil dbUtil;
private int currentIndex;
public OneThread(Session session) {
this.session = session;
currentMessage = new ArrayList<AlarmMessage>();
dbUtil = new DBUtil();
currentIndex = 0;//此时是0条消息
}
@Override
public void run() {
while (true) {
List<AlarmMessage> list = null;
try {
try {
list = dbUtil.getFromDB();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
if (list != null && currentIndex < list.size()) {
for (int i = currentIndex; i < list.size(); i++) {
try {
session.getBasicRemote().sendText(list.get(i).getFanNo()
+ "," + list.get(i).getTime()
+ "," + list.get(i).getDescription());
} catch (IOException e) {
e.printStackTrace();
}
}
currentIndex = list.size();
}
try {
//一秒刷新一次
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
启用:
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class websocket {
@OnOpen
public void onOpen(Session session){
OneThread thread =null;
thread=new OneThread(session);
thread.start();
}
}