Open sujit-baniya opened 1 year ago
Hello, I'm trying to use this package for different namespaces
Here's the working version using github.com/googollee/go-socket.io
github.com/googollee/go-socket.io
func main() { server := socketio.NewServer(&engineio.Options{ Transports: []transport.Transport{ &polling.Transport{ CheckOrigin: allowOriginFunc, }, &websocket.Transport{ CheckOrigin: allowOriginFunc, }, }, }) server.OnConnect("/", func(s socketio.Conn) error { s.SetContext("") log.Println("connected:", s.ID()) return nil }) server.OnEvent("/", "notice", func(s socketio.Conn, msg string) { log.Println("notice:", msg) s.Emit("reply", "have "+msg) }) server.OnEvent("/chat", "msg", func(s socketio.Conn, msg string) string { log.Println("chat:", msg) s.SetContext(msg) return "recv " + msg }) server.OnEvent("/", "bye", func(s socketio.Conn) string { last := s.Context().(string) s.Emit("bye", last) s.Close() return last }) server.OnError("/", func(s socketio.Conn, e error) { log.Println("meet error:", e) }) server.OnDisconnect("/", func(s socketio.Conn, reason string) { log.Println("closed", reason) }) go func() { if err := server.Serve(); err != nil { log.Fatalf("socketio listen error: %s\n", err) } }() defer server.Close() http.Handle("/socket.io/", server) http.Handle("/", http.FileServer(http.Dir("asset"))) log.Println("Serving at http://localhost:8001...") log.Fatal(http.ListenAndServe(":8001", nil)) }
When I try to use this package I'm getting error. Not sure what might be the issue
func main() { port := ":8001" server := sio.NewServer( eio.WithPingInterval(300*1*time.Millisecond), eio.WithPingTimeout(200*1*time.Millisecond), eio.WithMaxPayload(1000000), eio.WithTransportOption(eiot.WithGovernor(1500*time.Microsecond, 500*time.Microsecond)), ) server.OnConnect(func(s *sio.SocketV4) error { log.Println("connected:", s.ID()) s.Of("/").On("notice", CustomWrap(func(a string) error { return s.Emit("reply", seri.String("have "+a)) })) s.Of("/").On("bye", CustomWrap(func(a string) error { return s.Emit("bye", seri.String(a)) })) s.Of("/chat").On("msg", CustomWrap(func(a string) error { fmt.Println("msg", a) return nil })) return nil }) http.Handle("/socket.io/", server) http.Handle("/", http.FileServer(http.Dir("asset"))) log.Printf("serving port %s...\n", port) log.Fatal(http.ListenAndServe(port, nil)) } // Define a custom wrapper type CustomWrap func(string) error // Define your callback func (cc CustomWrap) Callback(data ...interface{}) error { a, aOK := data[0].(string) if !aOK { return fmt.Errorf("bad parameters") } return cc(a) }
Error:
44{"message":"expected an []interface{} or []string, found []interface {}\t{\"do\":\"eventPacket\"}"}
index.html
<!doctype html> <html> <head> <title>Socket.IO chat</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font: 13px Helvetica, Arial; } form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; } form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } #messages { list-style-type: none; margin: 0; padding: 0; } #messages li { padding: 5px 10px; } #messages li:nth-child(odd) { background: #eee; } </style> </head> <body> <ul id="messages"></ul> <form action=""> <input id="m" autocomplete="off" /><button>Send</button> </form> <script src="https://cdn.socket.io/4.7.2/socket.io.min.js"></script> <script src="https://code.jquery.com/jquery-1.11.1.js"></script> <script> var socket = io("http://127.0.0.1:8001", {transports: ["websocket"]}); socket.on('reply', function(msg){ $('#messages').append($('<li>').text(msg)); }); $('form').submit(function(){ socket.emit('msg', $('#m').val(), function(data){ $('#messages').append($('<li>').text('ACK CALLBACK: ' + data)); }); socket.emit('notice', $('#m').val()); $('#m').val(''); return false; }); </script> </body> </html>
Hello, I'm trying to use this package for different namespaces
Here's the working version using
github.com/googollee/go-socket.io
When I try to use this package I'm getting error. Not sure what might be the issue
Error:
index.html