| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package main
- import (
- "fmt"
- "log"
- "math/rand"
- "os"
- "strings"
- "sync"
- "time"
- "github.com/shirou/gopsutil/process"
- )
- const (
- TestAkId = "lJSW0dXDcSQCKOYx1I2rEtCi"
- TestAkSecret = "2WnF0g81dEvwI5N3JMPaMFtY"
- TestHttpHost = "https://live-open.biliapi.com"
- )
- func main() {
- // 判断当前服务有无在执行
- processNum := GetPoccessNum()
- if processNum > 0 {
- fmt.Println("退出,当前运行的服务数", processNum)
- return
- }
- //
- rand.Seed(time.Now().UnixNano())
- //
- host, port, authBody, err := GetWebsocketInfo(TestAkId, TestAkSecret)
- if err != nil {
- log.Fatalln("[main | GetWsInfo] err", err)
- return
- }
- c := NewBiliWsClient(&BiliWsClientConfig{
- Host: host,
- Port: port,
- AuthBody: authBody,
- })
- if c == nil {
- log.Fatalln("[main | NewBiliWsClient] client init err")
- return
- }
- wg := sync.WaitGroup{}
- wg.Add(1)
- go func() {
- c.Run()
- }()
- wg.Wait()
- log.Println("[main | NewBiliWsClient] exit.....")
- }
- func GetPoccessNum() int {
- //
- num := 0
- //
- selfPID := os.Getpid()
- selfP, _ := process.NewProcess(int32(selfPID))
- cmdLine, _ := selfP.Cmdline()
- // 运行go run main.go方式的忽略判断,因为不准
- if strings.Contains(cmdLine, "exe/main") {
- return 0
- }
- // 判断当前是否进程还有跑
- pids, _ := process.Pids()
- for _, v := range pids {
- // 获取当前进程信息
- if selfPID == int(v) {
- continue
- }
- // 获取要匹配的进程信息
- p, _ := process.NewProcess(v)
- cmdline, _ := p.Cmdline()
- // if strings.Contains(cmdline, cmdLine) {
- // num++
- // }
- if cmdline == cmdLine {
- num++
- }
- //
- }
- return num
- }
|