ws.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package ws
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/gorilla/websocket"
  5. "net/http"
  6. "sync"
  7. )
  8. type User struct {
  9. Conn *websocket.Conn
  10. Name string
  11. Id string
  12. Avator string
  13. To_id string
  14. }
  15. type Message struct {
  16. conn *websocket.Conn
  17. context *gin.Context
  18. content []byte
  19. messageType int
  20. }
  21. type TypeMessage struct {
  22. Type interface{} `json:"type"`
  23. Data interface{} `json:"data"`
  24. }
  25. type ClientMessage struct {
  26. Name string `json:"name"`
  27. Avator string `json:"avator"`
  28. Id string `json:"id"`
  29. VisitorId string `json:"visitor_id"`
  30. Group string `json:"group"`
  31. Time string `json:"time"`
  32. ToId string `json:"to_id"`
  33. Content string `json:"content"`
  34. City string `json:"city"`
  35. ClientIp string `json:"client_ip"`
  36. Refer string `json:"refer"`
  37. }
  38. var ClientList = make(map[string]*User)
  39. var KefuList = make(map[string][]*User)
  40. var message = make(chan *Message)
  41. var Mux sync.RWMutex
  42. var upgrader = websocket.Upgrader{
  43. ReadBufferSize: 1024,
  44. WriteBufferSize: 1024,
  45. // 解决跨域问题
  46. CheckOrigin: func(r *http.Request) bool {
  47. return true
  48. },
  49. }