Здравствуйте, у меня создается сервер, который замечательно работает без таймера, но мне необходим таймер, что бы отправлять оставшееся время для работы клиентам (специфика сайта). Как только я добавляю таймер, то сервер просто не запускается. Не понимаю почему, вот код сервера:
package model;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.HashSet;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
public class video_chat_server extends WebSocketServer {
private Set<WebSocket> conns;
private int time_lesson;//время урока в минутах
private int hour=0, min=0, sec=1;//тсавшееся время урока
private Timer timer;
public video_chat_server(int port, int time) throws UnknownHostException {
super(new InetSocketAddress(port));
conns = new HashSet<>();
time_lesson=time;
//устанавливаем время урока
int num_min=0;
int all_min=0;
for(;;) {
num_min=num_min+30;
all_min=all_min+30;
if(num_min==60) {
hour++;
num_min=0;
}
if(all_min>=time_lesson)break;
}
min=num_min;
}
public video_chat_server( InetSocketAddress address ) {
super(address);
}
@Override
public void onClose(WebSocket conn, int arg1, String arg2, boolean arg3) {
// TODO Auto-generated method stub
System.out.println("CLOSESOCKET");
conns.remove(conn);
}
@Override
public void onError(WebSocket conn, Exception arg1) {
// TODO Auto-generated method stub
System.out.println("ERROR WEBSOCKET: "+arg1);
}
@Override
public void onMessage(WebSocket conn, String message) {
// TODO Auto-generated method stub
System.out.println("Message from client " + conn.getRemoteSocketAddress().getAddress().getHostAddress() + ": " + message);
AllSend(message);
}
@Override
public void onOpen(WebSocket conn, ClientHandshake handshake) {
// TODO Auto-generated method stub
System.out.println("New connection from " + conn.getRemoteSocketAddress().getAddress().getHostAddress());
if(conns.size()<2)conns.add(conn);
}
@Override
public void onStart() {
// TODO Auto-generated method stub
System.out.println("STARTSOCKET");
getTimeLesson();
}
//отправка всем сообщение
public void AllSend(String message) {
for (WebSocket sock : conns) {
sock.send(message);
}
}
public void getTimeLesson() {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
String message;
sec--;
if(sec==-1) {
sec=59;
min--;
if(min==-1) {
if(hour>0) {
min=59;
hour--;
}
}
}
message="{\"oper\": \"TIMER\", \"data\": \"";
if(hour>0)message+=Integer.toString(hour)+":";
if(min>=0)message+=Integer.toString(min)+":";
message+=Integer.toString(sec)+"\"}";
AllSend(message);
}
}, 1000, 1000);
}
}