mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-03 15:10:14 +08:00
Server
This commit is contained in:
parent
bd7e08b483
commit
f6c489f929
@ -5,8 +5,11 @@ import net.mamoe.mirai.event.MiraiEventManager;
|
||||
import net.mamoe.mirai.event.events.MiraiEvent;
|
||||
import net.mamoe.mirai.event.events.server.ServerDisableEvent;
|
||||
import net.mamoe.mirai.event.events.server.ServerEnableEvent;
|
||||
import net.mamoe.mirai.network.Network;
|
||||
import net.mamoe.mirai.task.MiraiTaskManager;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class MiraiServer {
|
||||
@Getter
|
||||
private static MiraiServer instance;
|
||||
@ -16,8 +19,12 @@ public class MiraiServer {
|
||||
this.onLoad();
|
||||
}
|
||||
|
||||
boolean isEnabled;
|
||||
|
||||
protected void shutdown(){
|
||||
this.getEventManager().boardcastEvent(new ServerDisableEvent());
|
||||
if(this.isEnabled) {
|
||||
this.getEventManager().boardcastEvent(new ServerDisableEvent());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -26,12 +33,21 @@ public class MiraiServer {
|
||||
@Getter
|
||||
MiraiTaskManager taskManager;
|
||||
|
||||
|
||||
private void onLoad(){
|
||||
|
||||
this.eventManager = MiraiEventManager.getInstance();
|
||||
this.taskManager = MiraiTaskManager.getInstance();
|
||||
|
||||
try {
|
||||
Network.start(Network.getAvaliablePort());
|
||||
} catch (InterruptedException | IOException e) {
|
||||
e.printStackTrace();
|
||||
this.shutdown();
|
||||
}
|
||||
|
||||
this.eventManager.boardcastEvent(new ServerEnableEvent());
|
||||
this.isEnabled = true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -10,6 +10,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||
import io.netty.handler.codec.bytes.ByteArrayDecoder;
|
||||
import io.netty.handler.codec.bytes.ByteArrayEncoder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
|
||||
/**
|
||||
* JPRE 网络层启动器.
|
||||
* 本类用于启动网络服务器. 包接受器请参考 {@link NetworkPacketHandler}
|
||||
@ -55,4 +58,12 @@ public final class Network {
|
||||
workerGroup.shutdownGracefully();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static int getAvaliablePort() throws IOException {
|
||||
ServerSocket serverSocket = new ServerSocket(0); //读取空闲的可用端口
|
||||
int port = serverSocket.getLocalPort();
|
||||
serverSocket.close();
|
||||
return port;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user