liuxiaolong
2020-03-11 1fc291e69cf5cabe8cb743d78f77fb34519495f5
client.go
@@ -1,6 +1,7 @@
package gopherdiscovery
import (
   "encoding/json"
   "errors"
   "log"
@@ -24,7 +25,7 @@
   // Service that needs to be discovered, for example for a web server could be
   // http://192.168.1.1:8080
   service string
   service ServiceInfo
   heartbeatmsg chan []byte
@@ -45,11 +46,16 @@
   changes chan []byte
}
func Client(urlServer string, service string) (*DiscoveryClient, error) {
   return ClientWithSub(urlServer, "", service)
type ServiceInfo struct {
   ServiceId string `json:"serviceId"`
   Info interface{} `json:"info"`
}
func ClientWithSub(urlServer string, urlPubSub string, service string) (*DiscoveryClient, error) {
func Client(urlServer string, serviceId string) (*DiscoveryClient, error) {
   return ClientWithSub(urlServer, "", serviceId)
}
func ClientWithSub(urlServer string, urlPubSub string, serviceId string) (*DiscoveryClient, error) {
   var sock mangos.Socket
   var err error
   var subscriber *Subscriber
@@ -76,10 +82,13 @@
      return nil, err
   }
   svInfo := ServiceInfo{
      ServiceId: serviceId,
   }
   client := &DiscoveryClient{
      urlServer:    urlServer,
      urlPubSub:    urlPubSub,
      service:      service,
      service:      svInfo,
      ctx:          ctx,
      cancel:       cancel,
      sock:         sock,
@@ -106,6 +115,10 @@
   d.cancel()
}
func (d *DiscoveryClient) SetResp(i interface{}) {
   d.service.Info = i
}
func (d *DiscoveryClient) run() {
   var err error
   var msg []byte
@@ -120,7 +133,12 @@
            log.Println("DiscoveryClient: Cannot receive the SURVEY", err.Error())
            continue
         }
         err = d.sock.Send([]byte(d.service))
         sendB, err := json.Marshal(d.service)
         if err != nil {
            log.Println("DiscoveryClient: marshal d.serviceInfo err", err.Error())
            continue
         }
         err = d.sock.Send(sendB)
         if err != nil {
            log.Println("DiscoveryClient: Cannot send the SURVEY response", err.Error())
            continue