我正在尝试通过向运行在mpv
的unix套接字发出命令来编写一个golang程序来控制/tmp/mpvsocket
。
这是我到目前为止所尝试的:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}`))
if err != nil {
log.Fatal("write error:", err)
}
}
这应该导致mpv退出但没有任何反应。
可以通过命令行发出此命令以获得预期结果:
echo '{ "command": ["quit"] }' | socat - /tmp/mpvsocket
它使用socat
将JSON发送到套接字。如何使用Golang将其发送到套接字?
答案 0 :(得分:1)
感谢@AndySchweig在上面的评论中,我需要在我的JSON之后换一个新行。
固定线路:
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
完整的固定代码块:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
if err != nil {
log.Fatal("write error:", err)
}
}