使用 golang 将 JSON 发送到 unix 套接字

Send JSON to a unix socket with golang

我正在尝试编写一个 golang 程序来通过向位于 /tmp/mpvsocket 的 unix 套接字 运行 发出命令来控制 mpv

这是我目前尝试过的方法:

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 将其发送到套接字?

感谢@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)                
  }                                               
}