code: func (a *Remote) Push(route string, v interface{}) error {
  	if (reflect.TypeOf(a.rpcClient) == reflect.TypeOf(&cluster.NatsRPCClient{}) &&
  		a.Session.UID() == "") {
  		return constants.ErrNoUIDBind
  	}
  	switch d := v.(type) {
  	case []byte:
  		logger.Log.Debugf("Type=Push, ID=%d, UID=%d, Route=%s, Data=%dbytes",
  			a.Session.ID(), a.Session.UID(), route, len(d))
  	default:
  		logger.Log.Debugf("Type=Push, ID=%d, UID=%d, Route=%s, Data=%+v",
  			a.Session.ID(), a.Session.UID(), route, v)
  	}
  
  	sv, err := a.serviceDiscovery.GetServer(a.frontendID)
  	if err != nil {
  		return err
  	}
  	return a.sendPush(
  		pendingMessage{typ: message.Push, route: route, payload: v},
  		a.Session.UID(), sv,
  	)
  }
docs: // Push pushes the message to the user