forked from yam8511/go-pomelo-client
-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.go
118 lines (107 loc) · 2.5 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package main
import (
"fmt"
"log"
"os"
"os/signal"
"syscall"
"time"
client "github.com/revzim/go-pomelo-client"
"github.com/urfave/cli"
)
const (
DefaultPomeloAddress = "127.0.0.1:8080/ws"
)
var (
PomeloAddress string
ServerToken string
ServerID string
PomeloClient *client.Connector
)
func InitPomeloClient(addr string) {
PomeloClient = client.NewConnector()
err := PomeloClient.InitReqHandshake("0.6.0", "golang-websocket", nil, map[string]interface{}{"name": "dude"})
if err != nil {
log.Fatal("Pomelo Handshake err: ", err)
}
err = PomeloClient.InitHandshakeACK(1)
if err != nil {
panic(err)
}
// connected := false
PomeloClient.Connected(func() {
log.Printf("connected to server at: %s\n", addr)
// connected = true
err = PomeloClient.Request("room.join", nil, func(data []byte) {
log.Println("room join:", string(data))
})
if err != nil {
panic(err)
}
})
go func() {
err := PomeloClient.Run(addr, true, 2)
if err != nil {
panic(err)
}
}()
PomeloClient.On("onNewUser", func(data []byte) {
log.Println("onNewUser", string(data))
})
PomeloClient.On("onMembers", func(data []byte) {
log.Println("onMembers", string(data))
})
PomeloClient.On("onMessage", func(data []byte) {
log.Println("onMessage", string(data))
})
defer PomeloClient.Close()
}
func handleClose() {
sigChan := make(chan os.Signal)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-sigChan
PomeloClient.Close()
os.Exit(1)
}()
}
func main() {
app := &cli.App{
Name: "test client to connect to nano server",
Usage: "run the test client",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "ip",
Value: DefaultPomeloAddress,
Usage: "ip address of game server",
Destination: &PomeloAddress,
},
&cli.StringFlag{
Name: "token",
Value: "",
Usage: "your jwt token",
Destination: &ServerToken,
},
&cli.StringFlag{
Name: "id",
Value: "",
Usage: "your server id",
Destination: &ServerID,
},
},
Action: func(c *cli.Context) error {
serverAddr := fmt.Sprintf("ws://%s?id=%s&token=%s", PomeloAddress, ServerID, ServerToken)
log.Printf("attempting to connect to: %s...\n", serverAddr)
InitPomeloClient(serverAddr)
return nil // errors.New(fmt.Sprintf(`provided ip: %s | default: %v`, PomeloAddress, PomeloAddress == DefaultPomeloAddress))
},
}
err := app.Run(os.Args)
if err != nil {
panic(err)
}
handleClose()
for {
time.Sleep(time.Second)
}
}