Add SSE client for web chat integration and enable event-based message handling.
- Introduced `SseSubscribeClient` to connect to the external web server and process events via SSE (Server-Sent Events). - Added `WebHandler` interface for type-safe event deserialization and processing. - Included `WebChatHandler` to handle incoming web chat messages and forward them to the chat system. - Updated `Config` for new configurable values: `CHAT_WEB_REGISTER_TO_BASE_URL` and `CHAT_WEB_TOKEN`.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.alttd.chat;
|
||||
|
||||
import com.alttd.chat.chat_web.ChatMessageSender;
|
||||
import com.alttd.chat.chat_web.handlers.WebChatHandler;
|
||||
import com.alttd.chat.commands.*;
|
||||
import com.alttd.chat.config.Config;
|
||||
import com.alttd.chat.config.ServerConfig;
|
||||
@@ -15,6 +16,8 @@ import com.alttd.chat.objects.chat_log.ChatLogHandler;
|
||||
import com.alttd.chat.util.ALogger;
|
||||
import com.alttd.chat.util.ServerName;
|
||||
import com.alttd.chat.util.Utility;
|
||||
import com.alttd.chat.web.SseSubscribeClient;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -24,12 +27,15 @@ import java.util.Objects;
|
||||
|
||||
public class ChatPlugin extends JavaPlugin {
|
||||
|
||||
@Getter
|
||||
private static ChatPlugin instance;
|
||||
|
||||
private ChatAPI chatAPI;
|
||||
@Getter
|
||||
private ChatHandler chatHandler;
|
||||
|
||||
private ServerConfig serverConfig;
|
||||
private SseSubscribeClient sseSubscribeClient;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
@@ -78,10 +84,23 @@ public class ChatPlugin extends JavaPlugin {
|
||||
getServer().getMessenger().registerIncomingPluginChannel(this, messageChannel, nicknamesEvents);
|
||||
getServer().getPluginManager().registerEvents(nicknamesEvents, this);
|
||||
registerCommand("nick", new Nicknames());
|
||||
|
||||
sseSubscribeClient = new SseSubscribeClient(
|
||||
Config.CHAT_WEB_REGISTER_TO_BASE_URL,
|
||||
getServer().getServerName(),
|
||||
Config.CHAT_WEB_TOKEN
|
||||
);
|
||||
new Thread(sseSubscribeClient).start();
|
||||
registerWebHandlers(chatMessageSender, sseSubscribeClient);
|
||||
}
|
||||
|
||||
private void registerWebHandlers(ChatMessageSender chatMessageSender, SseSubscribeClient sseSubscribeClient) {
|
||||
sseSubscribeClient.register("web_chat", new WebChatHandler(chatMessageSender));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
sseSubscribeClient.stop();
|
||||
instance = null;
|
||||
}
|
||||
|
||||
@@ -95,14 +114,6 @@ public class ChatPlugin extends JavaPlugin {
|
||||
Objects.requireNonNull(getCommand(commandName)).setExecutor(commandExecutor);
|
||||
}
|
||||
|
||||
public static ChatPlugin getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public ChatHandler getChatHandler() {
|
||||
return chatHandler;
|
||||
}
|
||||
|
||||
public boolean serverGlobalChatEnabled() {
|
||||
return serverConfig.GLOBALCHAT;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.alttd.chat.chat_web.handlers;
|
||||
|
||||
import com.alttd.chat.chat_web.ChatMessageSender;
|
||||
import com.alttd.chat.web.WebHandler;
|
||||
import com.alttd.chat.web.handler_class.ChatFromWeb;
|
||||
|
||||
public class WebChatHandler implements WebHandler<ChatFromWeb> {
|
||||
|
||||
private final ChatMessageSender chatMessageSender;
|
||||
|
||||
public WebChatHandler(ChatMessageSender chatMessageSender) {
|
||||
this.chatMessageSender = chatMessageSender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<ChatFromWeb> type() {
|
||||
return ChatFromWeb.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(ChatFromWeb chatFromWeb) {
|
||||
this.chatMessageSender.sendMessage(chatFromWeb.getSender(), chatFromWeb.getMessage());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user