Base game & server skeleton

This commit is contained in:
Thomas
2020-08-20 11:41:47 +02:00
parent 7edec4bc22
commit 932b591728
82 changed files with 480 additions and 390 deletions

View File

@@ -1,8 +1,6 @@
package gltronic.tronio.web;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,63 +10,49 @@ import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import gltronic.tronio.business.IRoomManager;
import gltronic.tronio.business.IGameManager;
import gltronic.tronio.business.SocketUtils;
import gltronic.tronio.model.Player;
@Component
public class SocketHandler extends TextWebSocketHandler {
private volatile List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Autowired
IRoomManager roomManager;
IGameManager gameManager;
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
public void handleTextMessage(WebSocketSession session, TextMessage message)
throws InterruptedException, IOException {
System.err.println("[WS] message :" + message.getPayload());
String payload = message.getPayload();
JSONObject jsonObject = new JSONObject(payload);
String type = (String) jsonObject.get("type");
switch (type) {
case "serverInfos":
roomManager.sendServerInfos(session);
break;
case "login":
roomManager.login(session, (String) jsonObject.get("name"));
break;
case "createRoom":
roomManager.createRoom(session);
break;
case "connectRoom":
roomManager.connectRoom(session, (String) jsonObject.get("name"));
break;
case "leave":
roomManager.leave(session);
break;
case "offer":
case "answer":
case "candidate":
roomManager.followRTC(session, message);
break;
case "search":
break;
case "alive":
break;
case "update":
gameManager.update(session, (Player) jsonObject.get("update"));
break;
default:
roomManager.sendMessage(session, "error", "unknow command");
SocketUtils.sendMessage(session, "error", "unknow command");
}
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.err.println("[WS] new connection " + this);
sessions.add(session);
gameManager.login(session);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus){
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
System.err.println("[WS] connection closed");
sessions.remove(session);
roomManager.leave(session);
try {
gameManager.leave(session);
} catch (InterruptedException | IOException e) {
e.printStackTrace();
}
}
}