diff --git a/test/main.go b/test/main.go
new file mode 100644
index 0000000..29615ba
--- /dev/null
+++ b/test/main.go
@@ -0,0 +1,19 @@
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+func main() {
+
+ if len(os.Args) < 3 {
+ fmt.Println("./test room server")
+ return
+ }
+
+ room := os.Args[1]
+ key := os.Args[2]
+
+ statRoom(room, key)
+}
diff --git a/test/worker.go b/test/worker.go
new file mode 100644
index 0000000..7da8008
--- /dev/null
+++ b/test/worker.go
@@ -0,0 +1,120 @@
+package main
+
+import (
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "github.com/gorilla/websocket"
+ "net/url"
+ "reflect"
+ "time"
+)
+
+func getWS(room, key string) string {
+ u := url.URL{Scheme: "wss", Host: "node2-ord.livemediahost.com:3000"}
+ c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
+ if err != nil {
+ fmt.Println(err.Error())
+ return ""
+ }
+
+ defer c.Close()
+
+ if err = c.WriteMessage(websocket.TextMessage, []byte(`["v3.authorize",{"token":"`+key+`"}]`)); err != nil {
+ fmt.Println(err.Error())
+ return ""
+ }
+
+ for {
+ c.SetReadDeadline(time.Now().Add(30 * time.Minute))
+ _, message, err := c.ReadMessage()
+ if err != nil {
+ fmt.Println(err.Error())
+ return ""
+ }
+
+ //fmt.Println(string(message))
+
+ var input []interface{}
+
+ if err := json.Unmarshal(message, &input); err != nil {
+ fmt.Println(err)
+ }
+
+ if reflect.TypeOf(input[0]).String() != "float64" {
+ continue
+ }
+
+ if int(input[0].(float64)) == 2 {
+ if err = c.WriteMessage(websocket.TextMessage, []byte(`[5,{"room": "`+room+`"}]`)); err != nil {
+ fmt.Println(err.Error())
+ return ""
+ }
+ fmt.Println("send message!")
+ continue
+ }
+
+ if int(input[0].(float64)) == 6 {
+ return input[1].(map[string]interface{})["url"].(string)
+ }
+ }
+
+ return ""
+}
+
+func statRoom(room, key string) {
+ fmt.Println("Start", room, "key", key)
+
+ if len(key) < 50 {
+ fmt.Println(key, room)
+ return
+ }
+
+ xkey, err := base64.StdEncoding.DecodeString(key)
+ if err != nil {
+ fmt.Println(err, room)
+ return
+ }
+
+ xurl := getWS(room, string(xkey))
+
+ wsUrl, _ := url.Parse(xurl)
+
+ u := url.URL{Scheme: "wss", Host: wsUrl.Host}
+ c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
+ if err != nil {
+ fmt.Println(err.Error())
+ return
+ }
+
+ defer c.Close()
+
+ if err = c.WriteMessage(websocket.TextMessage, []byte(`["v3.authorize",{"token":"`+string(xkey)+`"}]`)); err != nil {
+ fmt.Println(err.Error())
+ return
+ }
+
+ for {
+ c.SetReadDeadline(time.Now().Add(30 * time.Minute))
+ _, message, err := c.ReadMessage()
+ if err != nil {
+ fmt.Println(err.Error())
+ return
+ }
+
+ //fmt.Println(string(message))
+
+ var input []interface{}
+
+ if err := json.Unmarshal(message, &input); err != nil {
+ fmt.Println(err)
+ }
+
+ if reflect.TypeOf(input[0]).String() == "float64" {
+ if int(input[0].(float64)) == 27 && input[1].(map[string]interface{})["subject_username"] != nil && input[1].(map[string]interface{})["value"] != nil {
+ //[27,{"recent_tips":88,"value":1,"subject_username":"max4you","is_tip":true,"is_stealth":false},1,["max4you tipped 1 tokens"]]
+ fmt.Println(input[1].(map[string]interface{})["subject_username"].(string), "send", int64(input[1].(map[string]interface{})["value"].(float64)), "to", room)
+ }
+ }
+ }
+}