mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 00:51:01 +03:00
События
This commit is contained in:
parent
bf061bfaf2
commit
b60bdb72fa
2 changed files with 24 additions and 10 deletions
|
@ -1,26 +1,20 @@
|
||||||
package ru.gravit.launchserver.socket.websocket;
|
package ru.gravit.launchserver.socket.websocket;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import io.netty.channel.ChannelHandler;
|
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.SimpleChannelInboundHandler;
|
import io.netty.channel.SimpleChannelInboundHandler;
|
||||||
import io.netty.channel.group.ChannelGroup;
|
|
||||||
import io.netty.channel.group.DefaultChannelGroup;
|
import io.netty.channel.group.DefaultChannelGroup;
|
||||||
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
||||||
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
|
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
|
||||||
import io.netty.util.AttributeKey;
|
|
||||||
import io.netty.util.AttributeMap;
|
|
||||||
import io.netty.util.concurrent.GlobalEventExecutor;
|
import io.netty.util.concurrent.GlobalEventExecutor;
|
||||||
import ru.gravit.launchserver.LaunchServer;
|
import ru.gravit.launchserver.LaunchServer;
|
||||||
import ru.gravit.launchserver.socket.Client;
|
import ru.gravit.launchserver.socket.Client;
|
||||||
import ru.gravit.utils.helper.IOHelper;
|
import ru.gravit.utils.helper.IOHelper;
|
||||||
import ru.gravit.utils.helper.LogHelper;
|
import ru.gravit.utils.helper.LogHelper;
|
||||||
public class WebSocketFrameHandler extends SimpleChannelInboundHandler<WebSocketFrame> {
|
public class WebSocketFrameHandler extends SimpleChannelInboundHandler<WebSocketFrame> {
|
||||||
public static final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
|
|
||||||
public static LaunchServer server;
|
public static LaunchServer server;
|
||||||
public static GsonBuilder builder = new GsonBuilder();
|
public static GsonBuilder builder = new GsonBuilder();
|
||||||
public static WebSocketService service = new WebSocketService(LaunchServer.server,builder);
|
public static WebSocketService service = new WebSocketService(new DefaultChannelGroup(GlobalEventExecutor.INSTANCE), LaunchServer.server,builder);
|
||||||
private Client client;
|
private Client client;
|
||||||
static {
|
static {
|
||||||
service.registerResponses();
|
service.registerResponses();
|
||||||
|
@ -29,7 +23,7 @@ public class WebSocketFrameHandler extends SimpleChannelInboundHandler<WebSocket
|
||||||
public void channelActive(ChannelHandlerContext ctx) {
|
public void channelActive(ChannelHandlerContext ctx) {
|
||||||
LogHelper.debug("New client %s", IOHelper.getIP(ctx.channel().remoteAddress()));
|
LogHelper.debug("New client %s", IOHelper.getIP(ctx.channel().remoteAddress()));
|
||||||
client = new Client(0);
|
client = new Client(0);
|
||||||
channels.add(ctx.channel());
|
service.registerClient(ctx.channel());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
import io.netty.channel.Channel;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import io.netty.channel.group.ChannelGroup;
|
||||||
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
||||||
import ru.gravit.launchserver.LaunchServer;
|
import ru.gravit.launchserver.LaunchServer;
|
||||||
import ru.gravit.launchserver.socket.Client;
|
import ru.gravit.launchserver.socket.Client;
|
||||||
|
@ -15,9 +17,12 @@
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class WebSocketService {
|
public class WebSocketService {
|
||||||
public WebSocketService(LaunchServer server, GsonBuilder gson) {
|
public final ChannelGroup channels;
|
||||||
|
public WebSocketService(ChannelGroup channels, LaunchServer server, GsonBuilder gson) {
|
||||||
|
this.channels = channels;
|
||||||
this.server = server;
|
this.server = server;
|
||||||
this.gsonBuiler = gson;
|
this.gsonBuiler = gson;
|
||||||
|
this.
|
||||||
gsonBuiler.registerTypeAdapter(JsonResponseInterface.class,new JsonResponseAdapter(this));
|
gsonBuiler.registerTypeAdapter(JsonResponseInterface.class,new JsonResponseAdapter(this));
|
||||||
this.gson = gsonBuiler.create();
|
this.gson = gsonBuiler.create();
|
||||||
}
|
}
|
||||||
|
@ -47,6 +52,10 @@ public void registerResponse(String key,Class responseInterfaceClass)
|
||||||
{
|
{
|
||||||
responses.put(key,responseInterfaceClass);
|
responses.put(key,responseInterfaceClass);
|
||||||
}
|
}
|
||||||
|
public void registerClient(Channel channel)
|
||||||
|
{
|
||||||
|
channels.add(channel);
|
||||||
|
}
|
||||||
public void registerResponses()
|
public void registerResponses()
|
||||||
{
|
{
|
||||||
registerResponse("echo", EchoResponse.class);
|
registerResponse("echo", EchoResponse.class);
|
||||||
|
@ -56,6 +65,10 @@ public void sendObject(ChannelHandlerContext ctx, Object obj)
|
||||||
{
|
{
|
||||||
ctx.channel().writeAndFlush(new TextWebSocketFrame(gson.toJson(obj)));
|
ctx.channel().writeAndFlush(new TextWebSocketFrame(gson.toJson(obj)));
|
||||||
}
|
}
|
||||||
|
public void sendEvent(EventResult obj)
|
||||||
|
{
|
||||||
|
channels.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj)));
|
||||||
|
}
|
||||||
public static class ErrorResult
|
public static class ErrorResult
|
||||||
{
|
{
|
||||||
public ErrorResult(String error) {
|
public ErrorResult(String error) {
|
||||||
|
@ -76,7 +89,14 @@ public SuccessResult(String requesttype) {
|
||||||
public final String requesttype;
|
public final String requesttype;
|
||||||
public final String type;
|
public final String type;
|
||||||
}
|
}
|
||||||
public class ExceptionResult
|
public static class EventResult
|
||||||
|
{
|
||||||
|
public EventResult() {
|
||||||
|
this.type = "event";
|
||||||
|
}
|
||||||
|
public final String type;
|
||||||
|
}
|
||||||
|
public static class ExceptionResult
|
||||||
{
|
{
|
||||||
public ExceptionResult(Exception e) {
|
public ExceptionResult(Exception e) {
|
||||||
this.message = e.getMessage();
|
this.message = e.getMessage();
|
||||||
|
|
Loading…
Reference in a new issue