package alma.logoot.network;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class GetData
*/
public class GetData extends HttpServlet {
private static final long serialVersionUID = 1L;
private static ArrayList<PrintWriter> clients=new ArrayList<PrintWriter>();
private static boolean first=true;
/**
* @see HttpServlet#HttpServlet()
*/
public GetData() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet : session=> "+request.getSession(true).getId());
response.setHeader("pragma", "no-cache,no-store");
response.setHeader("cache-control","no-cache,no-store,max-age=0,max-stale=0");
response.setHeader("Accept-Charset", "utf-8");
response.setContentType("text/event-stream;charset=utf-8;");
response.setCharacterEncoding("UTF-8");
clients.add(response.getWriter());
if(first){
first=false;
String clientSentence;
System.out.println("GetData : Creation de la socket sur le port 9990");
ServerSocket welcomeSocket = new ServerSocket(NetworkServiceImpl.PORTSEND);
while (true) {
System.out.println("GetData : Acceptation de la socket");
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
char[] buffer=new char[4096];
inFromClient.read(buffer);
clientSentence=(new String(buffer).trim().replaceAll("\n", "<br>"));
for(PrintWriter out:clients){
out.print("data: " + clientSentence + "\n\n");
out.flush();
}
}
}else{
while(true){
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}