Ray*_*n D 5 multithreading channel go websocket
我有下面的代码可以正常工作,问题是当连接socket.Connect() 失败时我想停止进程,我尝试使用以下代码,但是它不起作用,即如果套接字连接失败,程序仍然运行。我想发生的是,如果connect失败,过程将停止,并且通道会消失……我在这里缺少什么?
func run (appName string) (err error) {
done = make(chan bool)
defer close(done)
serviceURL, e := GetContext().getServiceURL(appName)
if e != nil {
err = errors.New("process failed" + err.Error())
LogDebug("Exiting %v func[err =%v]", methodName, err)
return err
}
url := "wss://" + serviceURL + route
socket := gowebsocket.New(url)
addPass(&socket, user, pass)
socket.OnConnectError = OnConnectErrorHandler
socket.OnConnected = OnConnectedHandler
socket.OnTextMessage = socketTextMessageHandler
socket.OnDisconnected = OnDisconnectedHandler
LogDebug("In %v func connecting to URL %v", methodName, url)
socket.Connect()
jsonBytes, e := json.Marshal(payload)
if e != nil {
err = errors.New("build process failed" + e.Error())
LogDebug("Exiting %v func[err =%v]", methodName, err)
return err
}
jsonStr := string(jsonBytes)
LogDebug("In %v Connecting to payload JSON is %v", methodName, jsonStr)
socket.SendText(jsonStr)
<-done
LogDebug("Exiting %v func[err =%v]", methodName, err)
return err
}
func OnConnectErrorHandler(err error, socket gowebsocket.Socket) {
methodName := "OnConnectErrorHandler"
LogDebug("Starting %v parameters [err = %v , socket = %v]", methodName, err, socket)
LogInfo("Disconnected from server ")
done <- true
}
Run Code Online (Sandbox Code Playgroud)
该进程应为运行大约60-90sec 的进程打开一个ws连接(例如执行npm install),并通过web socket及其完成时间获取进程的日志,当然要处理可能出现的问题,例如网络问题或运行Windows时出现的一些错误处理
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |