connectServer method
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");
}
}