From 338d7d656b6b14ebe7f4d5b9d069fa163a563745 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Thu, 11 May 2017 01:19:12 +0300 Subject: [PATCH] =?UTF-8?q?MCSM:WebConsole:=20=D0=BF=D0=BE=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D1=8B=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D1=81=20websocket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcsmanager/websocket/FrameHandler.java | 8 ++-- .../src/main/resources/components.js | 40 ++++++++++++------- .../src/main/resources/moduleStyle.css | 1 + 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java b/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java index 1d59d20..1bc6bc0 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java @@ -19,14 +19,14 @@ import java.util.concurrent.TimeUnit; public class FrameHandler extends SimpleChannelInboundHandler { private final Logger logger = LoggerFactory.getLogger(FrameHandler.class); private ScheduledFuture sesFuture; + private int i = 1; @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { - ctx.channel().writeAndFlush(new TextWebSocketFrame("")); - ScheduledExecutorService ses = Executors.newScheduledThreadPool(1); - sesFuture = ses.scheduleAtFixedRate(() -> ctx.channel().writeAndFlush(new TextWebSocketFrame("")), - 1L, 1L, TimeUnit.SECONDS); + sesFuture = ses.scheduleAtFixedRate(() -> ctx.channel().writeAndFlush( + new TextWebSocketFrame(String.format("", i++))), + 500L, 1000L, TimeUnit.MILLISECONDS); super.channelActive(ctx); } diff --git a/mcserver-manager/src/main/resources/components.js b/mcserver-manager/src/main/resources/components.js index a8dc8c9..26f38ef 100644 --- a/mcserver-manager/src/main/resources/components.js +++ b/mcserver-manager/src/main/resources/components.js @@ -65,21 +65,33 @@ var Tabs = React.createClass({ }); var WebConsole = React.createClass({ - render: function(){return( - ce('div', {id: 'webconsole'}, - ce('p', null, '[19:50:18 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!'), - ce('p', null, '[19:50:18 WARN]: The server will make no attempt to authenticate usernames. Beware.'), - ce('p', null, '[19:50:18 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.'), - ce('p', null, '[19:50:18 WARN]: To change this, set "online-mode" to "true" in the server.properties file.'), - ce('p', null, '[19:50:18 INFO]: **** Beginning UUID conversion, this may take A LONG time ****'), - ce('p', null, '[19:50:18 INFO]: Preparing level "voidworld"'), - ce('p', null, '[19:50:18 INFO]: -------- World Settings For [voidworld] --------'), - ce('p', null, '[19:50:18 INFO]: Arrow Despawn Rate: 1200'), - ce('p', null, '[19:50:18 INFO]: Item Merge Radius: 2.5'), - ce('p', null, '[19:50:18 INFO]: Item Despawn Rate: 6000'), - ce('p', null, '[19:50:18 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true') + ws: null, + /*--------------------*/ + getInitialState: function(){return{ + lines: [] + }}, + render: function(){ + return( + ce('div', {id: 'webconsole', ref: 'webconsole'}, this.state.lines.map(function(line){ return ce('p', null, line); })) ) - )} + }, + componentDidMount: function(){ + var _this = this; + + this.ws = new WebSocket("ws://127.0.0.1:8770"); //FIXME указывать ip:port из настроек + this.ws.onopen = function(){ console.debug('WS: open...'); }; + this.ws.onclose = function(){ console.debug('WS: close...'); }; + this.ws.onmessage = function(event){ + console.debug('WS: message: '+event.data); + _this.setState({ lines: _this.state.lines.concat([event.data]) }); + }; + }, + componentDidUpdate: function() { + // this.refs.webconsole.scrollTop = this.refs.webconsole.scrollHeight; + }, + componentWillUnmount: function(){ + this.ws.close(); + } }); var ServerInfo = React.createClass({ diff --git a/mcserver-manager/src/main/resources/moduleStyle.css b/mcserver-manager/src/main/resources/moduleStyle.css index 1c42f17..76a7bab 100644 --- a/mcserver-manager/src/main/resources/moduleStyle.css +++ b/mcserver-manager/src/main/resources/moduleStyle.css @@ -4,6 +4,7 @@ height: 500px; padding: 8px; font-family: monospace; + overflow-y: scroll; } #webconsole p {