connectServer method

Future<void> connectServer(
  1. String socketRoomId
)

Implementation

Future<void> connectServer(String socketRoomId) async {
  try {
    roomId = socketRoomId;
    socket
        .connect()
        .onError((error) => logger.severe("error during connect socket server >>> $error"));

    // socket connect event
    socket.on("connect", (data) {
      // 소켓 통신에 참여 가능한지 여부 체크
      socket.emit("checkConnectability",
          {"roomId": roomId, "userId": AccountManager.currentLoginUser.email});
    });
    // socket disconnect event
    socket.on("disconnect", (data) {
      disconnect();
    });

    // ====================================== socket event ======================================
    // 소켓 통신에 참여가 가능하다면
    socket.on("connectable", (data) {
      socket.emit("connectRoom", {
        "roomId": roomId,
        "userId": AccountManager.currentLoginUser.email,
        "userName": AccountManager.currentLoginUser.name,
        "cursorColor": getRandomColor()
      });
    });

    // 소켓 통신에 참여가 불가능하다면
    socket.on("unconnectable", (data) {
      disconnect();
    });

    // 기존에 통신하고 있던 유저의 데이터 수신
    socket.on("alreadyConnectUser", (data) {
      mouseTracerHolder!.addAlreadyConnectUser(data["userList"]);
    });

    // 새로 통신에 접속한 유저의 데이터 수신
    socket.on("newConnectUser", (data) {
      mouseTracerHolder!.addNewConnectUser(data);
    });

    // 접속을 끊은 유저의 데이터 수신
    socket.on("disconnectUser", (data) {
      mouseTracerHolder!.removeDisConnectUser(data["userId"], data["socketId"]);
    });

    // 접속 중인 유저의 마우스 포인트의 좌표 데이터 수신
    socket.on("updateCursorPosition", (data) {
      mouseTracerHolder!.updateCursorPosition(data);
    });
  } catch (error) {
    logger.severe("error during connect socket server >>> $error");
  }
}