我使用 Cobra 框架向我的 CLI 应用程序添加了一个新命令。该命令应该启动接受套接字连接的 TCP 服务器。它接收一个有效负载,它是absolute一个文件/目录的路径,并尝试删除它。这是命令的代码
package cmd
import (
"bufio"
"fmt"
"net"
"os"
"github.com/spf13/cobra"
"wpgenius.io/util"
)
var cachePurgerCmd = &cobra.Command{
Use: "cache-purger",
Short: "Listen for request to purge NGINX page cache",
Run: func(cmd *cobra.Command, args []string) {
dstream, err := net.Listen("tcp", ":9876")
if err != nil {
util.HandleError(err, "Can not start listener..")
return
}
fmt.Println("Listening for purge requests...")
defer dstream.Close()
for {
con, err := dstream.Accept()
if err != nil {
util.HandleError(err, "Can not accept connection")
os.Exit(1)
}
go handleRequest(con)
}
},
}
func handleRequest(con net.Conn) {
path, err := bufio.NewReader(con).ReadString('\n')
if err != nil {
return
}
defer con.Close()
err = os.Remove(path)
if err != nil {
con.Write([]byte("ERROR"))
fmt.Println(err)
util.HandleError(err, "Can not delete cache file")
return
}
con.Write([]byte("SUCCESS"))
}
func init() {
rootCmd.AddCommand(cachePurgerCmd)
}
尽管文件/目录存在,但我仍然会no such file or directory出错。我通过简单地将它添加os.Remove到main函数中来进行健全性检查,以确保它与路径无关,并且我可以看到它成功删除了文件/目录。
我不确定它是否go routing与tcp server!
任何帮助将不胜感激!
Cats萌萌
相关分类