This commit is contained in:
Liang Ding 2014-08-22 15:37:26 +08:00
parent 12b8f780d9
commit 73cd1c6538
3 changed files with 28 additions and 10 deletions

View File

@ -5,5 +5,5 @@ import (
)
func main() {
fmt.Println("Hello, 世界")
fmt.Println("Hello, 世界")1
}

View File

@ -69,7 +69,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
cmd.Start()
rec := map[string]interface{}{}
channelRet := map[string]interface{}{}
go func(runningId int) {
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
} else {
rec["output"] = string(buf[:count])
channelRet["output"] = string(buf[:count])
channelRet["cmd"] = "run"
if nil != outputWS[sid] {
err := outputWS[sid].WriteJSON(&rec)
err := outputWS[sid].WriteJSON(&channelRet)
if nil != err {
glog.Error(err)
break
@ -150,7 +151,12 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
cmd := exec.Command("go", argv...)
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()
if nil != err {
@ -184,7 +190,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
channelRet["output"] = string(buf[:count])
channelRet["cmd"] = "build"
channelRet["nextCmd"] = "run"
channelRet["executable"] = curDir + string(os.PathSeparator) + executable
channelRet["executable"] = executable
if nil != outputWS[sid] {
glog.Infof("Session [%s] 's build [id=%d, file=%s] has done", sid, runningId, filePath)

View File

@ -2,12 +2,23 @@ var outputWS = new WebSocket(config.channel.output + '/output/ws');
outputWS.onopen = function() {
console.log('[output onopen] connected');
};
outputWS.onmessage = function(e) {
console.log('[output onmessage]' + 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);
} else if ('build' === data.cmd) {
console.log('build: ' + data.cmd);
$('#output').val(data.output);
if (0 != data.output.length) { // 说明编译有错误输出
return;
}
}
if ('build' == data.cmd) {
@ -25,6 +36,7 @@ outputWS.onmessage = function(e) {
$('#output').val('');
},
success: function(data) {
}
});
}