client_tcp.go 619 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package cpn
  2. import (
  3. "net"
  4. "git.wanbits.io/joe/nnet"
  5. )
  6. type TcpClient struct {
  7. *Hub
  8. addr string
  9. }
  10. func NewTcpClient(cf *nnet.HubConfig, cb nnet.ISessionCallback, p nnet.IProtocol) nnet.IHub {
  11. return &TcpClient{
  12. Hub: newHub(cf, cb, p),
  13. }
  14. }
  15. func (self *TcpClient) NewConnection(addr string, id uint64) error {
  16. tcpAddr, err := net.ResolveTCPAddr("tcp", addr)
  17. if err != nil {
  18. return err
  19. }
  20. conn, err := net.DialTCP("tcp", nil, tcpAddr)
  21. if err != nil {
  22. return err
  23. }
  24. self.wg.Add(1)
  25. go func() {
  26. ses := newSession(TcpConn{conn}, self)
  27. ses.UpdateId(id)
  28. ses.Do()
  29. self.wg.Done()
  30. }()
  31. return nil
  32. }