client_ws.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package internal
  2. import (
  3. // "math/rand"
  4. // "time"
  5. "github.com/gorilla/websocket"
  6. "one.com/nnet"
  7. )
  8. // 客户端组
  9. type WsClient struct {
  10. *Hub
  11. addr string
  12. pos int // 指示当前连接第几个 addr
  13. }
  14. func NewWsClient(cf *nnet.HubConfig, cb nnet.ISessionCallback, p nnet.IProtocol) *WsClient {
  15. return &WsClient{
  16. Hub: newHub(cf, cb, p),
  17. pos: 0,
  18. }
  19. }
  20. func (self *WsClient) Start() error {
  21. return nil
  22. }
  23. func (self *WsClient)NewConnection(addr string, id uint64) error {
  24. conn, _, err := websocket.DefaultDialer.Dial(addr, nil)
  25. if err != nil {
  26. return err
  27. }
  28. self.wg.Add(1)
  29. go func() {
  30. ses := newSession(NewWsConn(conn), self)
  31. ses.UpdateId(id)
  32. ses.Do()
  33. self.wg.Done()
  34. }()
  35. return nil
  36. }
  37. func (self *WsClient) DoJob(int) {
  38. }
  39. //func (self *WsClient) ConnectRand(addrs []string) error {
  40. // src := rand.NewSource(time.Now().UnixNano())
  41. // rnd := rand.New(src)
  42. // n := rnd.Intn(len(addrs))
  43. // addr := addrs[n]
  44. // return self.Connect(1, addr)
  45. //}
  46. func (self *WsClient) Stop() error {
  47. close(self.chQuit)
  48. self.wg.Wait()
  49. return nil
  50. }