Fix send code failed

This commit is contained in:
方块君 2022-07-26 23:39:52 +08:00
parent 1439139404
commit b3bc0f051a
3 changed files with 21 additions and 8 deletions

View File

@ -26,10 +26,8 @@ import com.github.jie65535.opencommand.socket.packet.HttpPacket;
import com.github.jie65535.opencommand.socket.packet.RunConsoleCommand;
import com.github.jie65535.opencommand.socket.packet.player.Player;
import com.github.jie65535.opencommand.socket.packet.player.PlayerEnum;
import emu.grasscutter.command.CommandMap;
import emu.grasscutter.server.http.Router;
import emu.grasscutter.utils.Crypto;
import emu.grasscutter.utils.MessageHandler;
import emu.grasscutter.utils.Utils;
import express.Express;
import express.http.Request;
@ -41,7 +39,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.FutureTask;
public final class OpenCommandOnlyHttpHandler implements Router {
@ -189,7 +186,7 @@ public final class OpenCommandOnlyHttpHandler implements Router {
player.type = PlayerEnum.RunCommand;
player.data = command;
if (!SocketServer.sendUidPacket(playerId, player, socketDataWait)) {
if (!SocketServer.sendUidPacketAndWait(playerId, player, socketDataWait)) {
response.json(new JsonResponse(404, "Player Not Found."));
return;
}

View File

@ -52,9 +52,9 @@ public class SocketServer {
// 向全部客户端发送数据
public static boolean sendAllPacket(BasePacket packet) {
var p = SocketUtils.getPacket(packet);
HashMap<String, ClientThread> old = (HashMap<String, ClientThread>) clientList.clone();
HashMap<String, ClientInfo> old = (HashMap<String, ClientInfo>) clientList.clone();
for (var client : old.entrySet()) {
if (!client.getValue().sendPacket(p)) {
if (!client.getValue().clientThread.sendPacket(p)) {
mLogger.warn("[OpenCommand] Send packet to client {} failed", client.getKey());
clientList.remove(client.getKey());
}
@ -90,8 +90,24 @@ public class SocketServer {
return false;
}
public static boolean sendUidPacket(Integer playerId, BasePacket player) {
var p = SocketUtils.getPacket(player);
var clientID = SocketData.getPlayerInServer(playerId);
if (clientID == null) return false;
var client = clientList.get(clientID);
if (client != null) {
if (!client.clientThread.sendPacket(p)) {
mLogger.warn("[OpenCommand] Send packet to client {} failed", clientID);
clientList.remove(clientID);
return false;
}
return true;
}
return false;
}
// 根据Uid发送到相应的客户端异步返回数据
public static boolean sendUidPacket(Integer playerId, BasePacket player, SocketDataWait<?> socketDataWait) {
public static boolean sendUidPacketAndWait(Integer playerId, BasePacket player, SocketDataWait<?> socketDataWait) {
var p = SocketUtils.getPacketAndPackID(player);
var clientID = SocketData.getPlayerInServer(playerId);
if (clientID == null) return false;

View File

@ -26,6 +26,6 @@ public class Player extends BasePacket {
p.type = PlayerEnum.DropMessage;
p.uid = uid;
p.data = str;
SocketServer.sendAllPacket(p);
SocketServer.sendUidPacket(uid, p);
}
}