github.com/qiniu/go-sdk/v7@v7.27.0/examples/rtc/main.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "net/http" 8 "os" 9 "strings" 10 "time" 11 12 "github.com/qiniu/go-sdk/v7/auth" 13 "github.com/qiniu/go-sdk/v7/rtc" 14 ) 15 16 var manager *rtc.Manager 17 18 func init() { 19 accessKey := os.Getenv("QINIU_ACCESS_KEY") 20 secretKey := os.Getenv("QINIU_SECRET_KEY") 21 22 mac := auth.New(accessKey, secretKey) 23 manager = rtc.NewManager(mac) 24 } 25 26 func getRoomToken(appId, roomName, userID string) (token string, err error) { 27 token, err = manager.GetRoomToken(rtc.RoomAccess{AppID: appId, RoomName: roomName, UserID: userID, ExpireAt: time.Now().Unix() + 3600}) 28 return 29 } 30 31 func dosomethingbyRoomToken(token string, appId, roomName, userID string) (err error) { 32 url := fmt.Sprintf("https://rtc.qiniuapi.com/v3/apps/%v/rooms/%v/auth?user=%v&token=%v", appId, "roomName", "userID", token) 33 req, err := http.NewRequest("GET", url, strings.NewReader("")) 34 if err != nil { 35 return 36 } 37 res, err := http.DefaultClient.Do(req) 38 if err != nil { 39 return 40 } 41 defer res.Body.Close() 42 resData, err := io.ReadAll(res.Body) 43 if err != nil { 44 return 45 } 46 fmt.Println(string(resData)) 47 jn, err := json.MarshalIndent(res.Header, " ", " ") 48 fmt.Println(string(jn)) 49 return 50 } 51 52 func createApp() (rtc.App, error) { 53 hubName := "hailong" 54 appReq := rtc.AppInitConf{Hub: hubName, Title: "gosdk-test", MaxUsers: 3, NoAutoKickUser: true} 55 app, err := manager.CreateApp(appReq) 56 return app, err 57 } 58 59 func updateApp(appID string) (rtc.App, error) { 60 appInfo := rtc.AppUpdateInfo{} 61 mergePublishRtmp := rtc.MergePublishRtmpInfo{} 62 mergePublishRtmp.Enable = &(&struct{ x bool }{true}).x 63 64 appInfo.NoAutoKickUser = &(&struct{ x bool }{false}).x 65 appInfo.MergePublishRtmp = &mergePublishRtmp 66 67 app, err := manager.UpdateApp(appID, appInfo) 68 return app, err 69 } 70 71 func min(a, b int) int { 72 if a > b { 73 return b 74 } 75 return a 76 } 77 78 func main() { 79 fmt.Println("\napp := createApp()") 80 app, err := createApp() 81 if err != nil { 82 fmt.Println(err) 83 return 84 } 85 86 fmt.Println("\nroomToken(app.AppID)") 87 token, err := getRoomToken(app.AppID, "roomName", "userID") 88 if err != nil { 89 fmt.Println(err) 90 } 91 if err == nil { 92 err = dosomethingbyRoomToken(token, app.AppID, "roomName", "userID") 93 if err != nil { 94 fmt.Println(err) 95 } 96 } 97 98 fmt.Println("\ngetApp(app.AppID)") 99 app, err = manager.GetApp(app.AppID) 100 if err != nil { 101 fmt.Println(err) 102 } 103 if err == nil { 104 j, _ := json.MarshalIndent(app, " ", " ") 105 fmt.Println(string(j)) 106 } 107 108 fmt.Println("\nlistAllUser(app.AppID)") 109 rooms, err := manager.ListAllActiveRooms(app.AppID, "l") 110 if err != nil { 111 fmt.Println(err) 112 } 113 if err == nil { 114 fmt.Printf("Rooms: %v\n", rooms[:min(10, len(rooms))]) 115 } 116 117 fmt.Println("\nlistUser(app.AppID)") 118 roomQuery, err := manager.ListActiveRooms(app.AppID, "l", 0, 1) 119 if err != nil { 120 fmt.Println(err) 121 } 122 if err == nil { 123 j, _ := json.MarshalIndent(roomQuery, " ", " ") 124 fmt.Println(string(j)) 125 } 126 127 fmt.Println("\nkickUser(app.AppID)") 128 err = manager.KickUser(app.AppID, "roomName", "userID") 129 if err != nil { 130 fmt.Println(err) 131 } 132 133 fmt.Println("\nupdateApp(app.AppID)") 134 app, err = updateApp(app.AppID) 135 if err != nil { 136 fmt.Println(err) 137 } 138 if err == nil { 139 j, _ := json.MarshalIndent(app, " ", " ") 140 fmt.Println(string(j)) 141 } 142 }