@@ -4,44 +4,50 @@ import (
44 "flag"
55 "log"
66 "math"
7- "github.com/Tom32i/netcode/internal/codec"
8- "github.com/Tom32i/netcode/internal/server"
7+ netcode "github.com/Tom32i/netcode/go"
8+ "github.com/gorilla/websocket"
9+ "net/http"
910 "time"
1011)
1112
12- type DemoServer struct {
13- server * server. Server
13+ type Demo struct {
14+ room * netcode. Room
1415}
1516
1617func main () {
1718 port := flag .Int ("port" , 8002 , "Port to run on" )
1819
1920 flag .Parse ()
2021
21- encoder := codec .CreateBinaryEncoder ([]* codec .RegisteredCodec {
22- {0 , "id" , codec .UInt8Codec {}},
23- {1 , "ping" , codec .LongUIntCodec {6 }},
24- {2 , "pong" , codec .LongUIntCodec {6 }},
25- {3 , "inverse" , codec .BooleanCodec {}},
26- {4 , "greeting" , codec .StringLongCodec {}},
27- {5 , "total" , codec .UInt8Codec {}},
28- }, codec .UInt8Codec {})
22+ encoder := netcode .CreateBinaryEncoder ([]* netcode .RegisteredCodec {
23+ {0 , "id" , netcode .UInt8Codec {}},
24+ {1 , "ping" , netcode .LongUIntCodec {6 }},
25+ {2 , "pong" , netcode .LongUIntCodec {6 }},
26+ {3 , "inverse" , netcode .BooleanCodec {}},
27+ {4 , "greeting" , netcode .StringLongCodec {}},
28+ {5 , "total" , netcode .UInt8Codec {}},
29+ }, netcode .UInt8Codec {})
2930
30- clients := server .CreateClientDirectory (uint (math .Pow (2 , 8 )))
31- server := server .CreateServer (* port , encoder , clients )
32-
33- demo := DemoServer {& server }
31+ clients := netcode .CreateClientDirectory (uint (math .Pow (2 , 8 )))
32+ room := netcode .CreateRoom (clients , encoder )
33+ demo := Demo {room }
3434
3535 go demo .run ()
3636
37- demo .server .Start ()
37+ netcode .Start (* port , "/" , func (socket * websocket.Conn , request * http.Request ) {
38+ err := room .Join (socket )
39+
40+ if err != nil {
41+ log .Fatal (err )
42+ }
43+ })
3844}
3945
40- func (demo * DemoServer ) run () {
46+ func (demo * Demo ) run () {
4147 log .Printf ("Demo is running" )
4248 for {
4349 select {
44- case m := <- demo .server .In :
50+ case m := <- demo .room .In :
4551 switch m .Message .Name {
4652 case "ping" :
4753 demo .handlePing (m .Client , m .Message )
@@ -50,43 +56,43 @@ func (demo *DemoServer) run() {
5056 default :
5157 log .Printf ("[client #%d] '%s': %v" , m .Client .ID , m .Message .Name , m .Message .Data )
5258 }
53- case e := <- demo .server .Out :
59+ case e := <- demo .room .Out :
5460 switch e .Name {
5561 case "client:join" :
56- demo .onClientJoin (e .Data .(* server .Client ))
62+ demo .onClientJoin (e .Data .(* netcode .Client ))
5763 case "client:leave" :
58- demo .onClientLeave (e .Data .(* server .Client ))
64+ demo .onClientLeave (e .Data .(* netcode .Client ))
5965 default :
6066 log .Printf ("event '%s': %v" , e .Name , e .Data )
6167 }
6268 }
6369 }
6470}
6571
66- func (demo * DemoServer ) broadcastTotal () {
67- message := codec .Message {"total" , uint8 (demo .server .Clients .Count ())}
68- buf := demo .server .Encoder .Encode (message )
69- demo .server .Clients .ForEach (func (c * server .Client ) { c .Write (buf ) })
72+ func (demo * Demo ) broadcastTotal () {
73+ message := & netcode .Message {"total" , uint8 (demo .room .Clients .Count ())}
74+ buf := demo .room .Encoder .Encode (message )
75+ demo .room .Clients .ForEach (func (c * netcode .Client ) { c .Write (buf ) })
7076}
7177
72- func (demo * DemoServer ) onClientJoin (c * server .Client ) {
78+ func (demo * Demo ) onClientJoin (c * netcode .Client ) {
7379 log .Printf ("Client #%d joined." , c .ID )
74- c .Send (codec .Message {"id" , uint8 (c .ID )})
80+ c .Send (& netcode .Message {"id" , uint8 (c .ID )})
7581 demo .broadcastTotal ()
7682}
7783
78- func (demo * DemoServer ) onClientLeave (c * server .Client ) {
84+ func (demo * Demo ) onClientLeave (c * netcode .Client ) {
7985 log .Printf ("Client #%d left." , c .ID )
8086 demo .broadcastTotal ()
8187}
8288
83- func (demo * DemoServer ) handlePing (c * server .Client , m codec .Message ) {
89+ func (demo * Demo ) handlePing (c * netcode .Client , m * netcode .Message ) {
8490 log .Printf ("[client #%d] ping %d" , c .ID , m .Data )
85- c .Send (codec .Message {"pong" , uint (time .Now ().UnixMilli ())})
86- c .Send (codec .Message {"inverse" , true })
91+ c .Send (& netcode .Message {"pong" , uint (time .Now ().UnixMilli ())})
92+ c .Send (& netcode .Message {"inverse" , true })
8793}
8894
89- func (demo * DemoServer ) handleGreeting (c * server .Client , m codec .Message ) {
95+ func (demo * Demo ) handleGreeting (c * netcode .Client , m * netcode .Message ) {
9096 log .Printf ("Client #%d greets you: '%s'" , c .ID , m .Data )
91- c .Send (codec .Message {"greeting" , "Hello, I'm server! 😊 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut imperdiet molestie libero, ut sollicitudin tortor dignissim quis. Nulla iaculis nisi turpis, a malesuada nibh faucibus a. Nunc tellus lorem, varius sit amet tellus eu, dictum consectetur nulla." })
97+ c .Send (& netcode .Message {"greeting" , "Hello, I'm server! 😊 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut imperdiet molestie libero, ut sollicitudin tortor dignissim quis. Nulla iaculis nisi turpis, a malesuada nibh faucibus a. Nunc tellus lorem, varius sit amet tellus eu, dictum consectetur nulla." })
9298}
0 commit comments