diff --git a/README.md b/README.md
index f1a86da..e6929b8 100644
--- a/README.md
+++ b/README.md
@@ -6,8 +6,6 @@
**device uuid 무조건 바꾸시오.**
-자바21에 추가된 virtual thread 사용하도록 바꾸는중...
-
## Example

@@ -80,6 +78,8 @@ jar 파일은 build/libs 디렉터리 안에 생성됩니다.
## Usage
+자바21 이상 필요합니다.
+
첫 로그인시에 기기등록이 필요합니다. 콘솔창에 방법 나오니 따라하세요.
로그인하면 로그인 정보(토큰 등)가 email_deviceName 폴더 안에 저장됩니다. 서버 연결이 안되면 삭제하고 시도하세요.
diff --git a/build.gradle b/build.gradle
index 3142ddf..2e0430b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,6 +4,8 @@ plugins {
group = 'com.github.netricecake'
version = '1.0-SNAPSHOT'
+sourceCompatibility = '21'
+targetCompatibility = '21'
jar {
manifest {
diff --git a/src/main/java/com/github/netricecake/kakao/LocoSocketHandlerImpl.java b/src/main/java/com/github/netricecake/kakao/LocoSocketHandlerImpl.java
index 3801547..883b51f 100644
--- a/src/main/java/com/github/netricecake/kakao/LocoSocketHandlerImpl.java
+++ b/src/main/java/com/github/netricecake/kakao/LocoSocketHandlerImpl.java
@@ -16,12 +16,10 @@ import com.github.netricecake.loco.packet.outbound.room.InfoLinkOut;
import com.github.netricecake.loco.packet.outbound.message.MessageOut;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
-import lombok.Getter;
public class LocoSocketHandlerImpl extends LocoSocketHandler {
- @Getter
- private TalkClient client;
+ private final TalkClient client;
public LocoSocketHandlerImpl(TalkClient client) {
this.client = client;
@@ -41,7 +39,9 @@ public class LocoSocketHandlerImpl extends LocoSocketHandler {
Member member = room.getMembers().get(in.getAuthorId());
Message msg = new Message(in.getLogId(), room, member, in.getType(), in.getMessage(), in.getAttachment());
- client.getTalkHandler().onMessage(msg);
+ Thread.ofVirtual().start(() -> {
+ client.getTalkHandler().onMessage(msg);
+ });
} else if (packet.getMethod().equals("NEWMEM")) {
NewMemIn in = new NewMemIn();
in.fromBson(packet.getBody());
@@ -50,7 +50,9 @@ public class LocoSocketHandlerImpl extends LocoSocketHandler {
ChatRoom room = client.getChatRooms().get(in.getChatId());
if (!room.getType().equals("OM")) return;
- client.getTalkHandler().onNewMember(room, room.getMembers().get(in.getUserId()));
+ Thread.ofVirtual().start(() -> {
+ client.getTalkHandler().onNewMember(room, room.getMembers().get(in.getUserId()));
+ });
} else if (packet.getMethod().equals("DELMEM")) {
DelMemIn in = new DelMemIn();
in.fromBson(packet.getBody());
@@ -58,7 +60,9 @@ public class LocoSocketHandlerImpl extends LocoSocketHandler {
ChatRoom room = client.getChatRooms().get(in.getChatId());
if (!room.getType().equals("OM")) return;
- client.getTalkHandler().onDelMember(room, new Member(in.getUserId(), in.getNickname(), 2));
+ Thread.ofVirtual().start(() -> {
+ client.getTalkHandler().onDelMember(room, new Member(in.getUserId(), in.getNickname(), 2));
+ });
room.getMembers().remove(in.getUserId());
} else if (packet.getMethod().equals("SYNCLINKPF")) {
SyncLinkPfIn si = new SyncLinkPfIn();
diff --git a/src/main/java/com/github/netricecake/kakao/TalkClient.java b/src/main/java/com/github/netricecake/kakao/TalkClient.java
index 0aa8958..02bb28c 100644
--- a/src/main/java/com/github/netricecake/kakao/TalkClient.java
+++ b/src/main/java/com/github/netricecake/kakao/TalkClient.java
@@ -36,14 +36,14 @@ import java.util.concurrent.Executors;
public class TalkClient {
- private String email;
- private String password;
- private String deviceName;
- private String deviceUuid;
- private String sessionDir;
+ private final String email;
+ private final String password;
+ private final String deviceName;
+ private final String deviceUuid;
+ private final String sessionDir;
@Getter
- private Map chatRooms = new HashMap<>();
+ private final Map chatRooms = new HashMap<>();
@Getter
protected boolean connected;
diff --git a/src/main/java/com/github/netricecake/loco/codec/SecureLayerCodec.java b/src/main/java/com/github/netricecake/loco/codec/SecureLayerCodec.java
index 0fab3da..395e418 100644
--- a/src/main/java/com/github/netricecake/loco/codec/SecureLayerCodec.java
+++ b/src/main/java/com/github/netricecake/loco/codec/SecureLayerCodec.java
@@ -9,7 +9,7 @@ import java.util.List;
public class SecureLayerCodec extends MessageToMessageCodec {
- private CryptoManager cryptoManager;
+ private final CryptoManager cryptoManager;
private int currentLength = -1;
private byte[] buffer = new byte[0];
@@ -20,6 +20,7 @@ public class SecureLayerCodec extends MessageToMessageCodec {
@Override
protected void encode(ChannelHandlerContext channelHandlerContext, byte[] bytes, List