index.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package socket_io
  2. import (
  3. "crm-api/pkg/lfshook"
  4. socketio "github.com/googollee/go-socket.io"
  5. )
  6. var SocketIOServer *socketio.Server
  7. func StartSocketIO() {
  8. lfshook.NewLogger().Info("Start SocketIO")
  9. SocketIOServer = socketio.NewServer(nil)
  10. SocketIOServer.OnConnect("/", func(s socketio.Conn) error {
  11. s.SetContext("")
  12. //!TODO check token
  13. // lfshook.NewLogger().Infof("socketio query %s", s.URL().RawQuery)
  14. // lfshook.NewLogger().Infof("socket.io connected id: %s", s.ID())
  15. return nil
  16. })
  17. SocketIOServer.OnEvent("/", "chat", func(s socketio.Conn, msg string) {
  18. lfshook.NewLogger().Infof("chat: %s", msg)
  19. s.Emit("reply", "have "+msg)
  20. })
  21. SocketIOServer.OnEvent("/", "bye", func(s socketio.Conn) string {
  22. last := s.Context().(string)
  23. s.Emit("bye", last)
  24. s.Close()
  25. return last
  26. })
  27. SocketIOServer.OnError("/", func(s socketio.Conn, e error) {
  28. lfshook.NewLogger().Infof("meet error: %+v", e)
  29. })
  30. SocketIOServer.OnDisconnect("/", func(s socketio.Conn, reason string) {
  31. lfshook.NewLogger().Infof("closed %+v", reason)
  32. })
  33. go SocketIOServer.Serve()
  34. }