Commit 9a7db8d

bryfry <bryon@fryer.io>
2017-02-17 23:20:48
it connects!
Changed files (1)
main.go
@@ -0,0 +1,80 @@
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"github.com/gorilla/websocket"
+	"log"
+	"time"
+)
+
+type SocketIO struct {
+	*websocket.Conn
+}
+
+func (s *SocketIO) Emit(msg ...interface{}) error {
+	w, err := s.NextWriter(websocket.TextMessage)
+	if err != nil {
+		return err
+	}
+	_, err = w.Write([]byte("42"))
+	j := json.NewEncoder(w)
+	return j.Encode(msg)
+}
+func (s *SocketIO) Ping() error {
+	w, err := s.NextWriter(websocket.TextMessage)
+	if err != nil {
+		return err
+	}
+	_, err = w.Write([]byte("2ping"))
+	return err
+}
+
+func main() {
+	generals_url := "ws://botws.generals.io/socket.io/?EIO=3&transport=websocket"
+	user_id := "k_00003"
+	username := "k_bot3"
+
+	dialer := &websocket.Dialer{}
+	dialer.EnableCompression = false
+
+	conn, _, err := dialer.Dial(generals_url, nil)
+	c := &SocketIO{conn}
+	if err != nil {
+		log.Fatal(err)
+	}
+	err = c.Emit("set_username", user_id, username)
+	if err != nil {
+		log.Fatal(err)
+	}
+	err = c.Emit("join_private", "test", user_id)
+	if err != nil {
+		log.Fatal(err)
+	}
+	go func() {
+		for range time.Tick(5 * time.Second) {
+			c.Ping()
+		}
+	}()
+	for {
+		_, message, err := c.ReadMessage()
+		if err != nil {
+			log.Fatal(err)
+		}
+		log.Println("Got: ", string(message))
+		dec := json.NewDecoder(bytes.NewBuffer(message))
+		var msgType int
+		dec.Decode(&msgType)
+
+		if msgType == 42 {
+			var raw json.RawMessage
+			dec.Decode(&raw)
+			eventname := ""
+			data := []interface{}{&eventname}
+			json.Unmarshal(raw, &data)
+			//if f, ok := c.events[eventname]; ok {
+			//	f(raw)
+			//}
+		}
+	}
+}