diff --git a/client/src/store/signalPlugin.js b/client/src/store/signalPlugin.js index a8701f7..44788b3 100644 --- a/client/src/store/signalPlugin.js +++ b/client/src/store/signalPlugin.js @@ -1,6 +1,6 @@ -const connection = new WebSocket('ws://localhost:8181/socket') +// const connection = new WebSocket('ws://localhost:8181/socket') // const connection = new WebSocket('wss://echo.websocket.org') -// const connection = new WebSocket('wss://voozik.gltronic.ovh/socket') +const connection = new WebSocket('wss://voozik.gltronic.ovh/socket') var alive = null @@ -52,7 +52,7 @@ export default function createSignalPlugin () { break case 'roomStatus': - store.dispatch('room/setRoomStatus', data.message) + if (store.state.room.admin) store.dispatch('room/setRoomStatus', data.message) break case 'roomSettings': diff --git a/server/src/main/java/gltronic/voozik/business/RoomManager.java b/server/src/main/java/gltronic/voozik/business/RoomManager.java index d845c27..ad258be 100644 --- a/server/src/main/java/gltronic/voozik/business/RoomManager.java +++ b/server/src/main/java/gltronic/voozik/business/RoomManager.java @@ -6,18 +6,20 @@ import java.util.Optional; import java.util.Random; import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; +import gltronic.voozik.model.Server; import gltronic.voozik.model.ServerStatus; import gltronic.voozik.model.VRoom; import gltronic.voozik.model.VUser; @Service public class RoomManager implements IRoomManager { - private volatile ArrayList users = new ArrayList(); - private volatile ArrayList rooms = new ArrayList(); + @Autowired + Server server; @Override public void login(WebSocketSession session, String name) throws InterruptedException, IOException { @@ -26,12 +28,12 @@ public class RoomManager implements IRoomManager { return; } - if (users.stream().anyMatch(user -> user.getSession().equals(session))) { + if (server.users.stream().anyMatch(user -> user.getSession().equals(session))) { SocketUtils.sendMessage(session, "login", "false"); return; } - if (users.stream().anyMatch(user -> user.getName().equals(name))) { + if (server.users.stream().anyMatch(user -> user.getName().equals(name))) { SocketUtils.sendMessage(session, "login", "false"); return; } @@ -40,7 +42,7 @@ public class RoomManager implements IRoomManager { user.setName(name); user.setSession(session); - users.add(user); + server.users.add(user); SocketUtils.sendMessage(session, "login", "true"); sendServerInfos(session); @@ -50,11 +52,11 @@ public class RoomManager implements IRoomManager { @Override public void leave(WebSocketSession session) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; - users.remove(user); - Optional oroom = rooms.stream().filter(room -> room.getUsers().contains(user)).findFirst(); + server.users.remove(user); + Optional oroom = server.rooms.stream().filter(room -> room.getUsers().contains(user)).findFirst(); if (oroom.isPresent()) { oroom.get().getUsers().remove(user); @@ -63,7 +65,7 @@ public class RoomManager implements IRoomManager { @Override public void createRoom(WebSocketSession session) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; if (user.getRoom() != null) { @@ -83,7 +85,7 @@ public class RoomManager implements IRoomManager { room.setPublic(false); room.setUsers(new ArrayList()); - rooms.add(room); + server.rooms.add(room); user.setRoom(room); SocketUtils.sendMessage(session, "roomCreate", roomCode); @@ -98,14 +100,14 @@ public class RoomManager implements IRoomManager { return; } - Optional oroom = rooms.stream().filter(room -> room.getCode().equals(roomCode)).findFirst(); + Optional oroom = server.rooms.stream().filter(room -> room.getCode().equals(roomCode)).findFirst(); if (oroom.isEmpty()) { SocketUtils.sendMessage(session, "error", "no room"); return; } VRoom room = oroom.get(); - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; user.setRoom(room); @@ -129,7 +131,7 @@ public class RoomManager implements IRoomManager { @Override public void leaveRoom(WebSocketSession session) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; VRoom room = UserUtils.getRoom(session, user); @@ -151,7 +153,7 @@ public class RoomManager implements IRoomManager { @Override public void setRoomStatus(WebSocketSession session, TextMessage message) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; VRoom room = UserUtils.getRoom(session, user); @@ -175,7 +177,7 @@ public class RoomManager implements IRoomManager { @Override public void setRoomSettings(WebSocketSession session, TextMessage message) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; VRoom room = UserUtils.getRoom(session, user); @@ -192,7 +194,7 @@ public class RoomManager implements IRoomManager { @Override public void forwardRoomMessage(WebSocketSession session, TextMessage message) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; VRoom room = UserUtils.getRoom(session, user); @@ -210,7 +212,7 @@ public class RoomManager implements IRoomManager { @Override public void kickUser(WebSocketSession session, String username) throws InterruptedException, IOException { - VUser user = UserUtils.getUser(session, users); + VUser user = UserUtils.getUser(session, server.users); if (user == null) return; VRoom room = UserUtils.getRoom(session, user); @@ -239,11 +241,11 @@ public class RoomManager implements IRoomManager { public void sendServerInfos(WebSocketSession session) throws InterruptedException, IOException { ServerStatus status = new ServerStatus(); - status.setRoomCount(rooms.size()); - status.setUserCount(users.size()); + status.setRoomCount(server.rooms.size()); + status.setUserCount(server.users.size()); status.setRooms(new ArrayList()); - rooms.forEach(room -> { + server.rooms.forEach(room -> { if(room.isPublic()) status.getRooms().add(room.getCode()); }); diff --git a/server/src/main/java/gltronic/voozik/model/Server.java b/server/src/main/java/gltronic/voozik/model/Server.java new file mode 100644 index 0000000..85f9024 --- /dev/null +++ b/server/src/main/java/gltronic/voozik/model/Server.java @@ -0,0 +1,11 @@ +package gltronic.voozik.model; + +import java.util.ArrayList; + +import org.springframework.stereotype.Component; + +@Component +public class Server { + public ArrayList users = new ArrayList(); + public ArrayList rooms = new ArrayList(); +} \ No newline at end of file diff --git a/voozik.jar b/voozik.jar index f19514f..f65afcb 100644 Binary files a/voozik.jar and b/voozik.jar differ