1
0
forked from circlecloud/tera

refactor: rewrite rpc server client

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-20 13:12:21 +08:00
parent fd1b23a4c3
commit b05a00f87d
18 changed files with 315 additions and 298 deletions

View File

@@ -22,71 +22,7 @@
<body>
<div id="terminal" style="height: 100%;"></div>
<script type="text/javascript">
Terminal.applyAddon(fit);
Terminal.applyAddon(attach);
Terminal.applyAddon(fullscreen);
var term = new Terminal({
cursorBlink: true,
screenKeys: true
});
term.open(document.getElementById('terminal'));
term.toggleFullScreen();
term.fit();
var cmd = ''
term.on('data', (data) => {
if (data =='\r') {
term.writeln(data)
if(cmd.startsWith('/')){
args = cmd.split(' ');
cmd = args[0].substr(1);
switch(cmd){
case "connect":
if(args[1]){
newcon(args[1])
} else {
newcon('/main')
}
break;
case "disconnect":
socket.close();
break;
}
} else {
socket && socket.emit('webmsg', {cmd});
}
cmd = ''
} else {
cmd += data;
term.write(data)
}
});
function newcon(address){
socket = io(address,{
path: '/ws',
transports: ['websocket']
});
socket.on('connect', function(){
term.writeln('connect')
socket.emit('webclient',{})
});
socket.on('message', function(data){
for (const line of JSON.stringify(data, undefined, 4).split('\n')){
term.writeln(line);
}
});
socket.on('disconnect', function(){
term.reset();
term.writeln('disconnect')
});
}
window.onresize = function() {
term.fit();
term.scrollToBottom();
};
</script>
<script src="index.js"></script>
</body>
</html>

69
public/index.js Normal file
View File

@@ -0,0 +1,69 @@
Terminal.applyAddon(fit);
Terminal.applyAddon(attach);
Terminal.applyAddon(fullscreen);
var term = new Terminal({
cursorBlink: true,
screenKeys: true
});
term.open(document.getElementById('terminal'));
term.toggleFullScreen();
term.fit();
var cmd = ''
term.on('data', (data) => {
if (data == '\r') {
term.writeln(data)
if (cmd.startsWith('/')) {
args = cmd.split(' ');
cmd = args[0].substr(1);
switch (cmd) {
case "connect":
let address = args[1] || 'https://tera-ws.miaowoo.cc/web'
term.writeln(`Connect to ${address}...`)
newcon(address)
break;
case "disconnect":
socket.close();
break;
}
} else {
socket && socket.emit('webmsg', { cmd });
}
cmd = ''
return
}
cmd += data;
term.write(data)
});
let socket = undefined
function newcon(address) {
if (socket) {
socket.close()
}
socket = io(address, {
path: '/ws',
transports: ['websocket']
});
socket.on('connect', function() {
term.writeln('connect')
socket.emit('webclient', {})
});
socket.on('message', function(data) {
if (typeof data === "string") {
term.writeln(data);
} else {
for (const line of JSON.stringify(data, undefined, 4).split('\n')) {
term.writeln(line);
}
}
});
socket.on('disconnect', function() {
term.reset();
term.writeln('disconnect')
});
socket.connect()
}
window.onresize = function() {
term.fit();
term.scrollToBottom();
};