This commit is contained in:
parent
12b8f780d9
commit
73cd1c6538
|
@ -5,5 +5,5 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("Hello, 世界")
|
fmt.Println("Hello, 世界")1
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
cmd.Start()
|
cmd.Start()
|
||||||
|
|
||||||
rec := map[string]interface{}{}
|
channelRet := map[string]interface{}{}
|
||||||
|
|
||||||
go func(runningId int) {
|
go func(runningId int) {
|
||||||
glog.Infof("Session [%s] is running [id=%d, file=%s]", sid, runningId, filePath)
|
glog.Infof("Session [%s] is running [id=%d, file=%s]", sid, runningId, filePath)
|
||||||
|
@ -83,10 +83,11 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
rec["output"] = string(buf[:count])
|
channelRet["output"] = string(buf[:count])
|
||||||
|
channelRet["cmd"] = "run"
|
||||||
|
|
||||||
if nil != outputWS[sid] {
|
if nil != outputWS[sid] {
|
||||||
err := outputWS[sid].WriteJSON(&rec)
|
err := outputWS[sid].WriteJSON(&channelRet)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
break
|
break
|
||||||
|
@ -150,7 +151,12 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
cmd := exec.Command("go", argv...)
|
cmd := exec.Command("go", argv...)
|
||||||
cmd.Dir = curDir
|
cmd.Dir = curDir
|
||||||
|
|
||||||
glog.Info("go build ", filePath)
|
glog.Infof("go build -o %s %s", executable, filePath)
|
||||||
|
|
||||||
|
executable = curDir + string(os.PathSeparator) + executable
|
||||||
|
|
||||||
|
// 先把可执行文件删了
|
||||||
|
os.RemoveAll(executable)
|
||||||
|
|
||||||
stdout, err := cmd.StdoutPipe()
|
stdout, err := cmd.StdoutPipe()
|
||||||
if nil != err {
|
if nil != err {
|
||||||
|
@ -184,7 +190,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
channelRet["output"] = string(buf[:count])
|
channelRet["output"] = string(buf[:count])
|
||||||
channelRet["cmd"] = "build"
|
channelRet["cmd"] = "build"
|
||||||
channelRet["nextCmd"] = "run"
|
channelRet["nextCmd"] = "run"
|
||||||
channelRet["executable"] = curDir + string(os.PathSeparator) + executable
|
channelRet["executable"] = executable
|
||||||
|
|
||||||
if nil != outputWS[sid] {
|
if nil != outputWS[sid] {
|
||||||
glog.Infof("Session [%s] 's build [id=%d, file=%s] has done", sid, runningId, filePath)
|
glog.Infof("Session [%s] 's build [id=%d, file=%s] has done", sid, runningId, filePath)
|
||||||
|
|
|
@ -2,12 +2,23 @@ var outputWS = new WebSocket(config.channel.output + '/output/ws');
|
||||||
outputWS.onopen = function() {
|
outputWS.onopen = function() {
|
||||||
console.log('[output onopen] connected');
|
console.log('[output onopen] connected');
|
||||||
};
|
};
|
||||||
|
|
||||||
outputWS.onmessage = function(e) {
|
outputWS.onmessage = function(e) {
|
||||||
console.log('[output onmessage]' + e.data);
|
console.log('[output onmessage]' + e.data);
|
||||||
var data = JSON.parse(e.data);
|
var data = JSON.parse(e.data);
|
||||||
|
|
||||||
if ('init-output' !== data.cmd) {
|
if ('run' === data.cmd) {
|
||||||
|
console.log('run: ' + data.cmd);
|
||||||
|
|
||||||
$('#output').val($('#output').val() + data.output);
|
$('#output').val($('#output').val() + data.output);
|
||||||
|
} else if ('build' === data.cmd) {
|
||||||
|
console.log('build: ' + data.cmd);
|
||||||
|
|
||||||
|
$('#output').val(data.output);
|
||||||
|
|
||||||
|
if (0 != data.output.length) { // 说明编译有错误输出
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('build' == data.cmd) {
|
if ('build' == data.cmd) {
|
||||||
|
@ -25,6 +36,7 @@ outputWS.onmessage = function(e) {
|
||||||
$('#output').val('');
|
$('#output').val('');
|
||||||
},
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue